OpenGL混合(Java) 我编写了一些java OpenGL代码(虽然C++中的原理是相同的)。我有一种情况,我想在其他项目之上渲染某些项目。我可以通过对这些项目禁用深度测试或将其设置为GL_(始终),这样做效果很好。问题是上面的那些东西的颜色似乎被下面的东西弄暗了。我不确定这是一个照明问题还是一些混合问题,但我试图在不受周围颜色影响的情况下显示项目的颜色,而不管该项目的z位置(因为深度测试设置为“始终”)。有没有灯光设置或混合设置,我应该使用这个

OpenGL混合(Java) 我编写了一些java OpenGL代码(虽然C++中的原理是相同的)。我有一种情况,我想在其他项目之上渲染某些项目。我可以通过对这些项目禁用深度测试或将其设置为GL_(始终),这样做效果很好。问题是上面的那些东西的颜色似乎被下面的东西弄暗了。我不确定这是一个照明问题还是一些混合问题,但我试图在不受周围颜色影响的情况下显示项目的颜色,而不管该项目的z位置(因为深度测试设置为“始终”)。有没有灯光设置或混合设置,我应该使用这个,java,opengl,colors,blending,Java,Opengl,Colors,Blending,谢谢, Jeff我认为在这种情况下,我不需要设置深度,而是根据绘图顺序调整对象的Z值(对于那些希望根据顺序而不是正常深度绘制的项目) glBegin(GL_任意); 对于(int i=0;i我认为在这种情况下,我将不使用深度设置,而是根据绘图顺序调整对象的Z值(对于希望根据顺序而不是正常深度绘制的项目) glBegin(GL_任意); 对于(int i=0;有两个问题:你的意思是你希望最后绘制的对象始终显示在特定的像素中,而不管之前绘制的是什么,也不管深度;其次,你确定你在任何地方都不使用透明度

谢谢,
Jeff

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

glBegin(GL_任意);

对于(int i=0;i我认为在这种情况下,我将不使用深度设置,而是根据绘图顺序调整对象的Z值(对于希望根据顺序而不是正常深度绘制的项目)

glBegin(GL_任意);

对于(int i=0;有两个问题:你的意思是你希望最后绘制的对象始终显示在特定的像素中,而不管之前绘制的是什么,也不管深度;其次,你确定你在任何地方都不使用透明度吗?@DJClayworth,我希望最后绘制的对象是在特定点显示的对象,对吗,我们正在工作我将不进行深度测试。是的,我没有使用透明度。当我旋转场景时,它看起来是正确的。我真的认为需要进行两次渲染,其中我渲染场景的基础,然后是一组没有深度测试的对象,并在基础场景上渲染整个结果。两个问题:你的意思是你希望最后一次绘制对象吗o始终以特定像素显示,无论之前绘制的是什么,也不管深度;其次,您确定您在任何地方都不使用透明度吗?@DJClayworth,我希望最后绘制的对象是在特定点显示的对象,正确,这在没有深度测试的情况下运行良好。而且,是的,我没有使用透明度。当我旋转场景,它看起来是正确的。实际上,我认为需要一个两遍的渲染,我渲染场景的基础,然后是一组没有深度测试的对象,并在基础场景上渲染整个结果。谢谢。不过在这个应用程序中,我将向球体的表面添加一些东西,用户可以旋转球体。如果z值为ged,则项目实际上不会在曲面上。谢谢。不过在这个应用程序中,我将向球体的曲面添加东西,用户可以旋转球体。如果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);