gpt4 book ai didi

opengl - glDrawArrays 与 glMultiDrawArrays 的开销

转载 作者:行者123 更新时间:2023-12-04 14:21:11 27 4
gpt4 key购买 nike

有人能说出究竟是什么导致了多次 glDrawArrays 调用循环的开销,而一次 glMultiDrawArrays 调用没有状态变化吗?比如,为什么这样

for (int i = 0; i < num_objects; i++) {
glDrawArrays(GL_TRIANGLES,
object[n]->first_vertex,
object[n]->vertex_count);
}

据说比一次 glMultiDrawArrays 调用更昂贵?

最佳答案

您可能是因为在某处阅读了“减少绘制调用”或类似内容而开始相信这一点的。这是真的:从性能的角度来看,更少的绘制调用比更多的绘制调用更好。

但是,就 OpenGL 而言,真正的问题并不是“绘制调用”。您在绘制调用之间进行的状态更改会导致绘制调用变慢。如果您实际上没有将任何状态从一次绘制更改为下一次绘制,那么它们实际上非常快。

现在,顺序绘制可能不会像多次绘制那样快。但那是因为,每次发出绘制调用时,实现都必须问这个问题,“用户是否更改了任何渲染状态?”现在,一个好的实现可能会在每个状态更改函数的某处设置一些位,以便此检查归结为仅检查 bool 值。但是每次抽奖仍然必须完成。多图只检查一次。

但这通常是微不足道的性能差异。

关于opengl - glDrawArrays 与 glMultiDrawArrays 的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724263/

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