【发布时间】:2020-09-10 05:39:10
【问题描述】:
我正在渲染一个地形,因为底面永远不会被看到,我虽然面部剔除会带来不错的性能提升。我查了一个教程,找到了这些设置:
glCullFace(GL_FRONT);
glFrontFace(GL_CCW);
问题是,这只是部分工作。地形由四边形组成,每个四边形由两个直角三角形组成,我只看到两个三角形中的一个,如果我使用顺时针缠绕,我会看到另一个三角形。我正在使用索引来安全记忆,并且我已经在纸上绘制了索引的绕组应该如何,但不知何故它不起作用。
我像这样生成我的索引:
mapIndices[arrayIdx + 0] = i;
mapIndices[arrayIdx + 1] = i + 1;
mapIndices[arrayIdx + 2] = i + CHUNK_SIDE_LENGHT + 1;
mapIndices[arrayIdx + 5] = mapIndices[arrayIdx + 1];
mapIndices[arrayIdx + 4] = mapIndices[arrayIdx + 2];
mapIndices[arrayIdx + 3] = mapIndices[arrayIdx + 2] + 1;
不要对CHUNK_SIDE_LENGHT + 1 感到困惑,我想要CHUNK_SIDE_LENGHT 三角形,所以我需要CHUNK_SIDE_LENGHT + 1 一行的顶点。
正如我所说,我已经在纸上绘制了这个顺序并且缠绕是正确的,但是 OpenGL 不喜欢它。这可能与索引渲染有关吗?
【问题讨论】:
-
这是原码吗?原始代码中的索引 (5 - 4 - 3) 是否也以相反的顺序排列?