1

我是 OpenGL/ES 和 OpenTK 的新手,所以如果我的理解/术语有点偏离,请原谅我。

基本上,

  1. 我正在使用顶点缓冲区对象阵列(VBO)绘制一系列 [白色] 基于三角形的立方体。
  2. 然后我使用相同的顶点为立方体渲染一个 [黑色] 线框,使用lines & polygonOffset()。
  3. 问题是,我可以看到在背面渲染的线框(即透视),我不确定为什么(?)。
  4. 我正在使用 4 值颜色(rgba),我对第 4 值(alpha/opacity)没有做任何事情。

已经为基于三角形的立方体部分定义了法线,总共 36 个(2 x 3 verts/tri x 6 边),但是,我还没有为线框线段定义任何法线(目前)。

有没有人知道我可能做错了什么,仅基于 OpenGL 陷阱/经验。

JFYI,我在 mono/monotouch (C#) 上使用 OpenTK-OpenGL ES11

PS如果你想知道为什么我没有发布任何代码,那是因为渲染代码与游戏逻辑混合并分布在多个文件中。如有必要,我会尽快制作一个简单的、自包含的示例。

4

2 回答 2

1

确保您已打开深度测试。即使是组成线条和点的片段也会进行深度测试,因此如果您在线条前面绘制了形状,则这些形状应该遮挡线条。

您想查看glEnable带有参数的函数GL_DEPTH_TEST

于 2011-03-16T04:10:43.883 回答
1

假设 GL.EnableClientState 是glEnableClientState的直接模拟,这不是启用多边形偏移的方式。是否有glEnable的等价物?以下对我有用以获得可见的线框:

 glEnable( GL_POLYGON_OFFSET_FILL );
 // push back the filled faces a touch
 glPolygonOffset( 1, 1 );
 // draw filled faces
 ...
 glDisable( GL_POLYGON_OFFSET_FILL );
 // draw wireframe
 ...
于 2011-03-16T12:55:58.333 回答