C++学习(三零七)AttributeDispatchers详解
Posted hankern
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(三零七)AttributeDispatchers详解相关的知识,希望对你有一定的参考价值。
AttributeDispatchers称为属性调度器,用于将Geometry中的顶点属性(位置、颜色、法线等)派发到opengl中,用于几何图形的绘制。
AttributeDispatch属性调度类基类,又分为TemplateAttributeDispatch、TemplateTargetAttributeDispatch,由他们通过重载函数operator()执行具体的派发工作。
主要有如下几个类:
1、AttributeDispatch(属性调度)
osg/AttributeDispatchers
struct AttributeDispatch : public osg::Referenced
{
virtual void assign(const GLvoid*) {}
virtual void operator() (unsigned int) {};
};
2、TemplateAttributeDispatch
osg/AttributeDispatchers.cpp
template<typename T>
class TemplateAttributeDispatch : public AttributeDispatch
{}
3、TemplateTargetAttributeDispatch
osg/AttributeDispatchers.cpp
template<typename I, typename T>
class TemplateTargetAttributeDispatch : public AttributeDispatch
{
typedef void (GL_APIENTRY * F) (I, const T*);
virtual void operator () (unsigned int pos)
{
_functionPtr(_target, &(_array[pos * _stride]));
}
F _functionPtr;
}
4、AttributeDispatchMap
osg/AttributeDispatchers.cpp
class AttributeDispatchMap
{}
2、AttributeDispatchers(属性调度器)
用于管理将各种属性数组(例如存储在 osg::Geometry 中)分派到 OpenGL 的助手类。
osg/AttributeDispatchers
/** Helper class for managing the dispatch to OpenGL of various attribute arrays such as stored in osg::Geometry.*/
class OSG_EXPORT AttributeDispatchers : public osg::Referenced
{}
生成
使用
在osg的状态机中定义了,AttributeDispatchers
osg/State
class OSG_EXPORT State : public Referenced
{
/** Get the helper class for dispatching osg::Arrays as OpenGL attribute data.*/
inline AttributeDispatchers& getAttributeDispatchers() { return _arrayDispatchers; }
AttributeDispatchers _arrayDispatchers;
}
以上是关于C++学习(三零七)AttributeDispatchers详解的主要内容,如果未能解决你的问题,请参考以下文章