我正在尝试实现一个场景图,在我遇到的所有文章中都谈到了对象排序。因此,您可以按“材料”对对象进行排序。现在直到我坐下来并开始执行它,我都认为这是理所当然的,因为它是有道理的。但是现在我想知道排序实际上会发生什么变化?
在我的引擎中,我有一个UBO经理,我使用UBO来存储将在程序之间共享的数据,目前仅涉及时间,相机和投影矩阵以及灯光(我不担心管理哪些灯光会影响哪些对象是ATM)。
现在,对于每个模型,我都必须将模型更改为世界矩阵统一模型,而没有排序方法可以改变它。那么,从更改此矩阵到同时为每个对象设置不好的材质的跳转又是不是?
我隐约记得在某处阅读过,每次您更改管道中的某些内容时,都必须将其刷新,这可能会导致性能问题。但是无论如何,对于每个绘图调用,我都会为世界矩阵建立一个模型,因此对这个问题有什么意义呢?
顺便说一句,关于更改制服并调用glBufferSubData是否更(或更少)昂贵,有任何信息。
3
快速回答,是的,从更改矩阵到在每个对象上同时设置材质的跃迁真是太糟糕了。在这一点上,我建议您先进行一次旅行,以了解适用于您平台的OpenGL性能测量工具,然后再继续。使用性能工具,您可以轻松地测量不同的技术,并找出最适合渲染器需求的方法。加上这些工具,将使您在整个职业生涯中一劳永逸,而这个渲染器……就不多了;-)
—
Patrick Hughes
@PatrickHughes很棒,谢谢,我一定会检查一下
—
dreta 2012年