osgUtil.RenderStage是OpenSceneGraph的一个实用程序类,提供了在图形渲染阶段对渲染状态进行处理的功能,比如清除屏幕、绘制场景、设置相机、设置光照、设置材质等等。
RenderStage();
构造函数用于新建一个RenderStage对象。
void setCamera(Camera* camera);
设置当前渲染阶段使用的相机对象。
Camera* getCamera() const;
获取当前渲染阶段使用的相机对象。
void setViewport(osg::Viewport* viewport);
设置当前渲染阶段使用的视口对象。
osg::Viewport* getViewport() const;
获取当前渲染阶段使用的视口对象。
void setClearMask(GLbitfield mask);
设置当前渲染阶段清空屏幕时要清空的缓存位掩码。
GLbitfield getClearMask() const;
获取当前渲染阶段清空屏幕时要清空的缓存位掩码。
void setClearColor(const osg::Vec4& color);
设置当前渲染阶段清空屏幕时的颜色。
const osg::Vec4& getClearColor() const;
获取当前渲染阶段清空屏幕时的颜色。
void setClearDepth(double depth);
设置当前渲染阶段清空屏幕时的深度值。
double getClearDepth() const;
获取当前渲染阶段清空屏幕时的深度值。
void setClearStencil(int value);
设置当前渲染阶段清空屏幕时的模板值。
int getClearStencil() const;
获取当前渲染阶段清空屏幕时的模板值。
void setViewportState(ViewportState* vs);
设置当前渲染阶段使用的ViewportState对象。
ViewportState* getViewportState() const;
获取当前渲染阶段使用的ViewportState对象。
void setLightingMode(LightingMode mode);
设置当前渲染阶段的光照模式。
光照模式LightingMode包括以下几种:
LightingMode getLightingMode() const;
获取当前渲染阶段的光照模式。
void setLight(int lightNum, Light* light);
设置当前渲染阶段使用的光源。
参数lightNum表示光源的序号,从0开始,同时也是OpenGL中GL_LIGHT0~GL_LIGHT7的枚举值。
Light* getLight(int lightNum) const;
获取当前渲染阶段使用的光源。
参数lightNum表示光源的序号,从0开始,同时也是OpenGL中GL_LIGHT0~GL_LIGHT7的枚举值。
void setMaterial(Material* material);
设置当前渲染阶段使用的材质。
Material* getMaterial() const;
获取当前渲染阶段使用的材质。
void setClearColorBuffer(bool value);
设置当前渲染阶段是否清空颜色缓存。
bool getClearColorBuffer() const;
获取当前渲染阶段是否清空颜色缓存。
void setClearDepthBuffer(bool value);
设置当前渲染阶段是否清空深度缓存。
bool getClearDepthBuffer() const;
获取当前渲染阶段是否清空深度缓存。
void setClearStencilBuffer(bool value);
设置当前渲染阶段是否清空模板缓存。
bool getClearStencilBuffer() const;
获取当前渲染阶段是否清空模板缓存。
void setDrawBuffer(GLenum buffer);
设置当前渲染阶段绘制时使用的颜色缓存。
参数buffer可以是以下值中的一个:
GLenum getDrawBuffer() const;
获取当前渲染阶段绘制时使用的颜色缓存。
void setReadBuffer(GLenum buffer);
设置当前渲染阶段读取颜色数据时使用的缓存。
参数buffer可以是以下值中的一个:
GLenum getReadBuffer() const;
获取当前渲染阶段读取颜色数据时使用的缓存。
void setFrameStamp(FrameStamp* fs);
设置当前渲染阶段的FrameStamp。
FrameStamp是用于帧率控制和时间戳记录的结构体。
FrameStamp* getFrameStamp() const;
获取当前渲染阶段的FrameStamp。
void draw(Drawable* drawable, const State& state);
绘制一个可绘制对象。
参数drawable表示要绘制的可绘制对象。
参数state表示渲染状态。
void drawInstanced(Drawable* drawable, GLint primalCount, const State& state);
绘制多个可绘制对象。
参数drawable表示要绘制的可绘制对象。
参数primalCount表示要绘制的原始图元数。
参数state表示渲染状态。
void apply(View* view, osg::Node* node = nullptr);
根据View和Node来应用当前渲染阶段。
参数view为当前视图。
参数node为当前要绘制的场景节点。
osgUtil.RenderStage提供了对渲染状态进行处理的功能,比如清空屏幕、绘制场景、设置相机、设置光照、设置材质等等。在osgViewer.Viewer的内部实现中,osgUtil.RenderStage也扮演了非常重要的角色。因此深入了解osgUtil.RenderStage的功能和使用,对OpenSceneGraph的学习和使用都是非常有帮助的。