osg.UniformBufferBinding是OpenSceneGraph中用于绑定Uniform Buffer Object(UBO)的类。UBO是OpenGL中一种新特性,旨在高效传送大量数据给着色器程序。
osg.UniformBufferBinding()创建一个默认的绑定对象。注意,必须为每一个UBO创建一个独立的绑定对象。
osg.UniformBufferBinding(const osg::UniformBufferBinding& ubb, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY)拷贝构造函数,第二个参数是复制选项。使用此构造函数可以复制现有的osg.UniformBufferBinding对象。
void setBindingIndex(unsigned int index)设置绑定的索引。在调用此函数之前应该已经创建好了UBO,且执行了绑定。
unsigned int getBindingIndex() const获取绑定的索引。
void setOffset(unsigned int offset)设置在UBO中的偏移量。
unsigned int getOffset() const获取在UBO中的偏移量。
void setRange(unsigned int range)设置在UBO中使用的数据范围。
unsigned int getRange() const获取在UBO中使用的数据范围。
bool operator==(const osg::UniformBufferBinding& rhs) const重载运算符==,用于比较两个绑定对象是否相同。
osg::UniformBufferObject* ubo = new osg::UniformBufferObject();
...
unsigned int index = 2; // 绑定索引
unsigned int offset = 0; // UBO中的偏移量
unsigned int range = 16; // 使用数据范围
osg::UniformBufferBinding* ubb = new osg::UniformBufferBinding();
ubb->setBindingIndex(index);
ubb->setOffset(offset);
ubb->setRange(range);
ubo->setBinding(ubb);