是否有在使用索引缓冲区与OpenGL ES的(安卓)纹理的任何一点?

我使用的OpenGL ES显示来自搅拌机出口某些对象。搅拌器提供顶点列表,面部指数列表和2d的纹理坐标的列表。在搅拌机,和我一般相信在OpenGL中,纹理坐标映射到索引数组中描述的每个顶点。 P>

我想我有两个问题: P>

  1. 我的。据了解(见”应用纹理“一节),在OpenGL ES的纹理坐标映射到顶点缓冲区只,没有索引缓冲区。这种情况下,还是有质感共同ords结合到索引缓冲区,而不是一个办法吗? p> li>

  2. 如果上述情况确实存在,有什么可从使用索引缓存都得到了什么?毕竟正确映射贴图人会需要写出来的顶点缓冲区与所有将被保存在索引缓存冗余。是否仍有待获得或提高性能的索引缓冲区多余的纹理的数据? p> li> OL>

540 亚博体育官方网页版 1 回复
? gt ? 顶点 ? 索引 ? 纹理 ? 缓冲 ?

回复

    1)的我。据了解,在OpenGL ES的纹理坐标映射到顶点缓冲区只,没有索引缓冲区。 em>的 P>

    右键,纹理坐标是相对于顶点数据(无论是缓存或CPU空间)未索引数据。索引机构是从纹理独立 P>

    假设你有这样的顶点数组,由3个顶点(每3个分量): P>

    和本TEXCOORD阵列,取得了3坐标(各2个部分): P>

    当声明这个数据到OpenGL,则相关联的顶点0(X0,Y0,Z0)与纹理坐标0(U0,V0),顶点1与纹理坐标1,等等。在结束将地图上的三角形由3个顶点/ 3纹理坐标纹理的部分相对应的。 P>

    下面是传统的OpenGL图片,但对于一个四顶点多边形。 P>

    P>

    索引数据(缓冲或不)是指定顶点的间接性的而不是按顺序方式的一种方式。在我前面的例子,如果我想呈现三角形两次,我会指定索引数组那样: P>

    所以,为应对1),索引数据是独立于texcoords或其他顶点属性,如颜色,法线等,所以它是没有意义愿意结合texcoords索引数据。 P>

    2)的毕竟正确映射人会需要写出来的顶点缓冲区与所有将被保存在索引缓存冗余的纹理。是否有仍有待获得了业绩增长或者索引缓冲区多余的纹理的数据? em>的 P>

    一般,索引您的网格是重用相同的顶点,因此具有成本较低的内存占用时消除冗余的一种方式。在大多数情况下,我相信有很多冗余的。 P>

    当然,如果你把一个3D魔方,没有顶点共享相同的texcoords或法线,但是这并不是一个有代表性的典范!我相信大部分游戏的网格/ CAD应用是连续表面有很多顶点裁员,造福了很多的索引。 P>

    其次,有指标时,该GPU可使用前/后顶点缓存加快渲染。 关于内存带宽,具有指数几乎是免费的,因为显卡驱动程序把他们的PCI-Express存储(DMA的),因此不会吃起来显存带宽。 P>

    一切的一切,我不认为这是一个坏 STRONG>的事情,使用,即使你有顶点一些重复索引缓冲区的表演,但通常你应该检查针对不同的OpenGL实现,让您的自己的测试。 P>

    董娉珊

相关提问


友情链接: