菜鸟教程小白 发表于 2022-12-11 22:15:06

ios - 在 ios 上发送交错顶点数据有多重要


                                            <p><p>我正在使用 Assimp 导入一些 3d 模型。</p>

<p>Assimp 很棒,但它以非交错的顶点格式存储所有内容。</p>

<p>根据 Apple OpenGL ES 编程指南,在 ios 上首选交错顶点数据:<a href="https://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html#//apple_ref/doc/uid/TP40008793-CH107-SW8" rel="noreferrer noopener nofollow">https://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html#//apple_ref/doc/uid/TP40008793-CH107-SW8</a> </p>

<p>我正在使用 VertexArrays 来整合所有与缓冲区相关的状态更改 - 交错所有顶点数据是否仍然值得?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>因为交错的顶点数据增加了顶点数据的局部性,它允许 GPU 更有效地缓存,并且通常在流水线的那个阶段减少内存带宽。</p>

<p>它有多大的不同显然取决于许多其他因素——内存访问是否是一个瓶颈(尽管通常是,因为纹理是读取密集型的),如果不交错,你的顶点数据的间隔是多少,以及该特定 GPU 如何进行获取和缓存。</p>

<p>从理论上讲,上传多个顶点缓冲区并将它们捆绑到顶点数组中可以让驱动程序在您背后执行此优化(以便复制内存或一旦有理由确信缓冲区是数组)通常不会在其他地方使用)但我不相信它会。但反过来看,您应该能够在数据管道的最后自己进行优化,因此您无需提前计划或更改您的工具集。这是一种优化,所以如果实现的工作量很大,那么适用于过早优化的一般规则——等到你有硬性能数据。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 ios 上发送交错顶点数据有多重要,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/9813013/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/9813013/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 ios 上发送交错顶点数据有多重要