c++ - glCullFace 工作不正常,你有答案吗?
问题描述
我正在渲染一个地形,因为底面永远不会被看到,我虽然面部剔除会带来很好的性能提升。我查阅了一个教程并来到了这些设置:
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 不喜欢它。这可能与索引渲染有关吗?
解决方案
我在您的代码中看不到任何问题。
第一个三角形的缠绕顺序相同
0 : i
1 : i + 1
2 : i + CHUNK_SIDE_LENGHT + 1
2
+
| \
| \
| \
+-------+
0 1
作为第二个三角形的缠绕顺序:
3 : i + CHUNK_SIDE_LENGHT + 2
4 : i + CHUNK_SIDE_LENGHT + 1
5 : i + 1
4 3
+-------+
\ |
\ |
\ |
+
5
推荐阅读
- iphone - Xamarin Forms WebView 问题与 iPhone 上的摄像头有关
- node.js - nodejs 中的 Hyperledger Fabric nodejs 链代码单元测试,
- python - 如何从详细的变化数据中获取 Python 中的季度 S&P500 成分股?
- java - 发帖请求响应慢
- docker - Kafka 生产者错误“1 个分区具有没有匹配侦听器的领导代理”
- c# - 如何在窗体最小化时获取停靠控件的大小?
- python-3.x - 如何在循环中动态创建变量名以分配给 python 3 中的文件名
- python - flask/jinja2-如何引用“src”url_for中的变量
- css - 如何使用 VS Code Regex 搜索类的 CSS 属性
- kubernetes - Grafana 图像渲染服务 - 如何通过身份验证详细信息