Java OpenGL GL_TEXTURE_2D使其他颜色变暗

时间:2012-04-04 15:03:12

标签: java opengl jogl lwjgl

我正在尝试将纹理放入我的Java OpenGL场景中,但是当我做其他事物的颜色时会产生偏斜,就像它正在混合颜色不正确一样。我正在使用LWJGL for OpenGL和Slick来加载纹理。当我离开GL11.glEnable(GL11.GL_TEXTURE_2D);调用取消注释颜色变暗时,但当我评论一行颜色是正确的时,我显然没有纹理。

我已将我的代码放在http://codepaste.net/26bguu

有问题的第63行

我发现一个工作就是在绘制纹理之前启用纹理,然后立即再次禁用。但是我觉得这应该是不必要的。下面是一些显示我的意思的截图。唯一的区别是一行注释与未注释。

Without textures enabled. All colours are bright.

With textures enabled. All colours are darker.

1 个答案:

答案 0 :(得分:3)

您确实需要根据需要启用和停用GL_TEXTURE_2D

如果启用GL_TEXTURE_2D,GL将(通常)忽略您提供的顶点颜色,而是将给定的纹理坐标映射到给定的纹理以获取每个片段的颜色/像素。如果您没有传递纹理坐标,则可能会发生任何事情 - 例如,您发布的第二个屏幕截图。

必须进行20多次opengl调用以准备绘制每个“对象”并不罕见。这就是为什么OpenGL程序员花费大量时间将大量三角形组合成单个缓冲区,以便通过单次绘制调用一次绘制 - 这极大地提高了性能。