【问题标题】:Java OpenGL GL_TEXTURE_2D darkens other coloursJava OpenGL GL_TEXTURE_2D 使其他颜色变暗
【发布时间】:2012-04-04 15:03:11
【问题描述】:

我正在尝试将纹理放入我的 Java OpenGL 场景中,但是当我这样做时,其他事物的颜色会出现偏差,就好像它错误地混合了颜色一样。我将 LWJGL 用于 OpenGL,将 Slick 用于加载纹理。当我离开 GL11.glEnable(GL11.GL_TEXTURE_2D); 呼叫未注释时,颜色变暗,但是当我评论一行时,颜色是正确的,但是我显然没有纹理。

我已经把我的代码放在这里http://codepaste.net/26bguu

有问题的行是第 63 行

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

【问题讨论】:

    标签: java opengl jogl lwjgl


    【解决方案1】:

    您确实需要根据需要启用和禁用GL_TEXTURE_2D。

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

    必须进行 20 次以上的 opengl 调用来准备绘制每个“对象”的情况并不少见。这就是为什么 OpenGL 程序员花费大量时间将大量三角形组合到单个缓冲区中以通过一次绘制调用立即绘制的原因 - 它极大地提高了性能。

    【讨论】:

    • 好的,我将使用我认为是一个相当老套的解决方案:P 哦,好吧,我还没有学习 OpenGL 的来龙去脉。感谢您的帮助。
    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多