使用 glScale 时出现纹理错误
Texture error when using glScale
我在 LWJGL 中使用即时模式绘制四边形(是的,我知道它已被弃用,VBO 是更好的选择)但是当使用 glScaled 放大某些纹理时,底部或侧面被切断并绘制了一条线在他们上面。它仅在放大时可见,并且放大得越远越普遍我使用的所有图像都是 2 的幂,即 64 128 等
希望通过这张图片你能更清楚地明白我的意思:
纹理错误图像
您的屏幕截图看起来纹理坐标被包裹了。
尝试调用 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
,对 GL_TEXTURE_WRAP_T
也是如此。或者,根据 OpenGL 版本,对于 GL_TEXTURE_WRAP_S
和 GL_TEXTURE_WRAP_T
纹理参数,您可能需要 GL_CLAMP_TO_EDGE
值。设置纹理参数的正确时刻是在 glActiveTexture
& glBindTexture
之后但在 glBegin
.
之前
您可能没有更改这两个参数,它们的默认值是 GL_REPEAT,这就是导致伪影的原因。
我在 LWJGL 中使用即时模式绘制四边形(是的,我知道它已被弃用,VBO 是更好的选择)但是当使用 glScaled 放大某些纹理时,底部或侧面被切断并绘制了一条线在他们上面。它仅在放大时可见,并且放大得越远越普遍我使用的所有图像都是 2 的幂,即 64 128 等
希望通过这张图片你能更清楚地明白我的意思:
纹理错误图像
您的屏幕截图看起来纹理坐标被包裹了。
尝试调用 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
,对 GL_TEXTURE_WRAP_T
也是如此。或者,根据 OpenGL 版本,对于 GL_TEXTURE_WRAP_S
和 GL_TEXTURE_WRAP_T
纹理参数,您可能需要 GL_CLAMP_TO_EDGE
值。设置纹理参数的正确时刻是在 glActiveTexture
& glBindTexture
之后但在 glBegin
.
您可能没有更改这两个参数,它们的默认值是 GL_REPEAT,这就是导致伪影的原因。