gpt4 book ai didi

performance - 已编入索引的 GL_TRIANGLES 与编入索引的 GL_TRIANGLE_STRIP

转载 作者:行者123 更新时间:2023-12-04 13:00:09 24 4
gpt4 key购买 nike

关于索引三角形或三角形 strip 之间的渲染性能已经引起了相当大的讨论。但我相信有一个案例没有得到足够的考虑。

索引三角形在 OpenGl 中是这样渲染的:

glDrawElements(GL_TRIANGLES, ...);

但是出于某种原因,很多人只考虑以这种方式渲染 strip :
glDrawArrays(GL_TRIANGLE_STRIP, ...);

有一些非常好的索引器(Forsyth、Tipsify 仅举几例)可以优化您的网格,以便在 GL_TRIANGLES 模式下渲染 GPU 变换缓存。理想情况下,他们可以为每个三角形或类似的东西实现 0.5 个渲染顶点。

但为什么不这样做呢?
glDrawElements(GL_TRIANGLE_STRIP, ...);

我的意思是,您将 strip 渲染的低索引带宽与上述索引器提供的高效 GPU 转换缓存使用相结合。通过很少的修改,我说优化 strip 的 strip 索引器也对 Tcache 友好是一个好主意,我说得对吗?

可能它不会达到 0.5 的目标,但至少可能达到 0.6?另外,不要忘记巨大的索引带宽增益(可能是 GL_TRIANGLES 的三分之一)。

最佳答案

glDrawElements 需要在调用时将数据从 CPU 传递到 GPU。具体来说,最后一个参数是指向该数据的指针。

glDrawArrays 不需要在调用时将数据传递给 GPU。这可能就是为什么在卡片上存储顶点/索引数据时通常不考虑 glDrawElements 的原因。

关于performance - 已编入索引的 GL_TRIANGLES 与编入索引的 GL_TRIANGLE_STRIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com