首页 文章

OpenGL纹理映射

提问于
浏览
0

我在openGL的屏幕上绘制了两个对象,一个是使用GLU对象的球体,另一个是纹理映射的星形 . 无论z坐标如何,纹理映射的星似乎总是在前面绘制 . 这是正常的openGL行为吗?有办法防止这种情况吗?

注意:我正在使用worldwind框架,因此可能会发生其他事情导致此问题 . 但我只是想知道纹理映射对象出现在前面是否正常?我不这么认为,但我不确定......

1 回答

  • 0

    这不是worldwind中的错误,这实际上是期望的行为 . 使用glVertex2f()与使用glVertex3f()和设置z = 0相同 . 因此,它只是在非常接近观察者的平面上绘制星形(也取决于您的投影) .

    要解决您的问题,您可以使用glDepthMask(0)禁用深度写入,然后绘制星形,调用glDepthMask(1)然后绘制球体,现在它将位于星形的前面 .

    您还可以在星球上使用glDepthFunc(GL_GREATER)或在球体上使用glDisable(GL_DEPTH_TEST)来快速达到相同的效果 .

    为了使任何更复杂的事情(例如星球与球体相交),你需要使用矩阵将星星放在所需的位置 .

相关问题