OpenGL indicesBuffer值得使用吗?

Bla*_*tus -1 opengl shader

我目前正在学习用于3D渲染的OpenGL,我无法完全了解有关着色器和VBO的一些事情,我得到所有VBO共享一个索引,因此您需要复制一些数据

但是当你创建更多的VBO时,几乎没有具有共享相同位置法线和纹理坐标的顶点的面,所以索引至少从我的观点来看是相当无用的,它基本上只是一个连续数字的数组.

是否有一个方面的指数我看不到?

Nic*_*las 5

与所有顶点规范功能的实用程序一样,索引缓冲区的效用取决于您的网格数据.

在高性能图形中使用的大多数网格,特别是具有显着多边形密度的网格,都是平滑的.这些网格中的法线主要是平滑的,因为建模器通常近似于主要曲面.哦,是的,这里和那里可能会有一些锋利的边缘,但在大多数情况下,这些模型中的每个位置都有一个法线.

纹理坐标通常也可以跨网格平滑变化.当然有纹理坐标边; 经过充分优化的UV展开通常会产生这些东西.但是如果你有一个真实大小的网格(10K +顶点),大多数位置都有一个纹理坐标.切线/比特数基于纹理坐标的变化,因此它们将匹配纹理拓扑.

是否存在正常拓扑与位置拓扑高度不相交的网格?是.立方体就是一个明显的例子.但是,通常需要高度多面几何,以实现特定外观或低多边形用途.在这些情况下,正常的索引渲染可能对您没有好处.

但这并没有改变这样一个事实,即一般来说,这些案例是例外,而不是规则.即使您的代码总是涉及这些情况,对于大多数高性能图形应用程序来说也是如此.