在this document(Apple的OpenGL iOS文档)中,Apple建议在iOS上的OpenGL ES中使用三角形条带(索引)三角形:
为了获得最佳性能,您的模型应使用glDrawArrays作为单个无索引三角形条提交,并尽可能少复制顶点。
然而,Imagination Technologies(iOS设备中使用的图形芯片的创建者)在this document(POWERVR 3D应用程序开发建议)中提出了相反的建议。他们专门写在第11页:
使用索引三角形列表比使用条带更有效。
我的问题:谁是对的?或者我误解了这两个文件?
答案 0 :(得分:13)
此外,额外的好处是,三角形列表不再是性能障碍,因为您要在缓存中转换两个顶点,因此没有性能损失(除了每个三角形上传6个字节)而不是2(ish),这在宏观方案中并不多。)此外,因为你不需要执行条带“重新启动”(通过重复最后一个三角形的最后一个索引和下一个三角形的第一个索引来执行重启。即0,1,2,2,3,3, 4,5,6)一些复杂的网格比条带更快。除此之外,在未索引的条带中,每个重复的顶点必须完整地向下发送,需要发送的数据量可能比需要在索引列表中发送的数量高很多(如每个顶点)只发送一次,重复在更紧凑的索引中完成。)
当然,MBX(iPhone 3G)不支持转换后缓存,这很可能是苹果的建议来源。然而,SGX(iPhone 3GS及更高版本)确实如此,这取决于您希望定位的硬件。如果您确定目标3GS及以上,则使用索引,否则不要。当然,支持这两种方法的开箱即用将在两个平台上提供最佳性能。
当然,最好的方法是尝试这两种方法(这样做真的不需要很长时间),看看哪种方法在硬件上表现更好!!