0

我正在用 LWJGL 制作一个 OpenGL 游戏,并且刚刚成功实现了顶点属性和 VBO,我现在的问题是我有一个基于 slick-util 的小型 UI,它没有按应有的方式渲染纹理,我猜想它一定是如何光滑地将纹理坐标传递给着色器。现在我通过这样的顶点属性将纹理坐标传递给顶点着色器:

pass_TextureCoord = in_TextureCoord;

当我改变这个:

pass_TextureCoord = gl_MultiTexCoord0;

所有 3d 事物都失去了它们的纹理,并且 UI 恢复正常。

4

1 回答 1

1

gl_MultiTexCoord0只能使用固定功能的纹理坐标指针函数。如果不了解 slick-util 是如何实现的,几乎不可能告诉您正确的行为应该是什么。但是,如果您有选择,您应该倾向于使用通用顶点属性指针;glTexCoordPointer (...)已弃用。

然而,如果glTexCoordPointer (...)使用,则指针适用于活动纹理单元。GL_TEXTURE0如果您希望gl_MultiTexCoord0引用纹理坐标,请确保在使用 slick-util 设置纹理坐标指针之前将活动纹理单元设置为。

于 2013-09-14T00:10:30.807 回答