【问题标题】:OpenGL blending (Java)OpenGL 混合 (Java)
【发布时间】:2010-06-24 20:42:24
【问题描述】:

我正在编写一些 Java OpenGL 代码(尽管 C++ openGL 中的原理相同)。我有一种情况,我想在其他项目之上渲染某些项目。我可以通过禁用这些项目的深度测试或将其设置为 GL_ALWAYS 来做到这一点,并且效果很好。问题是顶部这些项目的颜色似乎被它下面的项目变暗了。我不确定这是照明问题还是混合问题,但我试图显示该项目的颜色而不受其周围颜色的影响,无论该项目的 z 位置如何(因为深度测试设置为 ALWAYS )。我应该为此使用照明设置或混合设置吗?

谢谢, 杰夫

【问题讨论】:

  • 两个问题:你的意思是你想让最后绘制的东西总是以特定的像素显示,不管之前绘制的是什么,也不管深度如何;其次,您确定不在任何地方使用透明度吗?
  • @DJClayworth,我希望绘制的最后一个对象是在特定位置显示的对象,正确,无需深度测试即可正常工作。而且,是的,我没有使用透明度。当我旋转场景时,它看起来是正确的。真的,我认为需要进行两次渲染,先渲染场景的基础,然后渲染一组没有深度测试的对象,然后在基础场景上渲染整个结果。

标签: java opengl colors blending


【解决方案1】:

我认为在这种情况下,我会不理会深度设置,而是根据绘制顺序调整对象的 Z 值(对于您希望根据顺序而不是正常深度绘制的那些项目)。

glBegin(GL_WHATEVER);
    for (int i=0; i<num_objects; i++) 
        glVertex(object[i].x, object[i].y, i/-100.0f);
glEnd(GL_WHATEVER);

【讨论】:

  • 谢谢。不过,在这个应用程序中,我正在向地球表面添加东西,用户可以旋转地球。如果 z 值发生更改,则这些项目实际上不会在表面上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多