我不确定为什么会这样,我只渲染一些简单的原始QUADS。 红色意味着在黄色前面。
黄色总是在红色前面,即使它在它后面。
这是一个错误还是我错误地看到了多维数据集?
答案 0 :(得分:10)
打开深度缓冲和深度测试,或者OpenGL会在后面绘制后者。
您的应用程序至少需要执行以下操作才能使深度缓冲起作用:
创建窗口时请求深度缓冲区。
在创建上下文并使其成为当前上下文之后,在程序的初始化例程中调用glEnable(GL_DEPTH_TEST)。
确保正确设置zNear和zFar剪裁平面,并提供足够的深度缓冲精度。
将GL_DEPTH_BUFFER_BIT作为参数传递给glClear,通常与其他值(如GL_COLOR_BUFFER_BIT)进行按位或运算。
请参阅此处http://www.opengl.org/resources/faq/technical/depthbuffer.htm
答案 1 :(得分:0)
我有同样的问题,但它与深度缓冲区无关,虽然我确实看到了一些更改,当我启用它时。它与使用的混合函数有关,它们在渲染的最后一步组合了像素强度。所以我不得不关闭glBlendFunc()