我用openGL在屏幕上绘制了两个对象,一个是使用GLU对象的球体,另一个是纹理贴图的星形。无论z坐标如何,纹理贴图的星形似乎总是在前面绘制。这是正常的openGL行为吗?有没有办法防止这种情况发生?
但是我想知道纹理贴图对象出现在前面是正常的吗?我不这么认为但我不确定..。
发布于 2012-02-13 19:13:06
这不是worldwind中的bug,这实际上是我们想要的行为。使用glVertex2f()与使用glVertex3f()和设置z= 0相同。因此,它只是在离观察者非常近的平面上绘制恒星(也取决于您的投影)。
要解决您的问题,可以使用glDepthMask(0)禁用深度写入,然后绘制星形,调用glDepthMask(1),然后绘制球体,球体现在将位于星形的前面。
也可以在星形上使用glDepthFunc(GL_GREATER)或在球体上使用glDisable(GL_DEPTH_TEST)来快速达到相同的效果。
要使任何事情变得更复杂(例如星形与球体相交),您需要使用矩阵将星形放置在所需位置。
https://stackoverflow.com/questions/3260609
复制相似问题