这与其说是 OpenGL 问题,不如说是 C++ 组织问题。
我将有一个简单的场景图(一个 n 树),其中的节点(为了这个问题)都会渲染一些几何图形。更具体地说,它们每个在draw()
方法中都有一些 OpenGL 绘制命令。
出于优化的原因,我想将相似的对象批处理在一起并一次绘制它们。出于这个原因,我想要一种表达我称之为 OpenGL 的“状态集”的方式。状态集只是一堆 OpenGL 绑定,或者在 X 对象上调用绘制之前设置的命令,然后再取消设置。
因此,状态集至少具有set()
并且unset()
将由渲染系统在使用该状态集的节点的绘制命令之前和之后调用。
我的问题是如何表达所说的状态集?当然一堆函数可以做,但我宁愿能够命名一个集合并回忆它。就像节点 A 有一个状态集,LIGHTING_AND_SHADOW
节点 B 有CEL_SHADING
。
出于这个原因,创建一个名为的抽象类stateSet
,它本质上是set()
andunset()
方法的接口,并让每个状态集都继承自它似乎是个好主意。但是,它需要创建一堆对象才能从本质上获得名称。似乎有更好的方法。
理想情况下,我希望列出所有stateSets
可以轻松回忆的内容。例如,在渲染开始之前,如果能够将场景图中的所有节点按它们的stateSet
.
有任何想法吗?