OpenGL(和D3D.和Metal.和Mantle.而且Vulkan)不支持这个,因为硬件不支持这个.硬件不支持这一点,因为对于绝大多数网格数据而言,这无济于事.这主要用于主要不平滑的网格(顶点共享位置但不是法线等等).大多数网格都很光滑.
此外,它经常是内存与性能之间的权衡.访问顶点数据可能会更慢.与单个交错式提取的情况相比,GPU必须从存储器中的两个不同位置获取.虽然缓存有帮助,但多索引访问的缓存一致性比单索引访问更难控制.
由于这个原因,硬件不太可能支持这一点.但它也不太可能支持它,因为你可以自己做.无论是通过缓冲区纹理,图像加载/存储还是SSBO,您都可以获得现在想要的顶点数据.既然你可以,那么硬件制造商就没有理由开发特殊的硬件来帮助你.
此外,还有一些问题,你是否真的要使你的顶点数据更小.在多索引渲染中,每个顶点由一组索引定义.好吧,每个索引占用空间.如果模型中的属性超过64K(在许多情况下几乎不是一个不合理的数字),那么每个索引需要4个字节.
可以使用GL_INT_2_10_10_10_REV和标准化以4个字节提供法线.2D纹理坐标也可以存储在4个字节中,作为一对短路.颜色可以存储在4个字节中.因此,除非多个属性共享相同的索引(法线和纹理坐标边缘发生在同一个位置,就像在多维数据集上可能发生的那样),否则在很多情况下实际上会使数据更大.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |