osg.StateAttribute提供了一种处理OpenGL状态的方法。它是OpenSceneGraph中的一个基本类,用于管理OpenGL状态和渲染状态的状态属性。
osg.StateAttribute提供了一些方法,允许您更改和查询OpenGL状态。状态属性包括blend模式、深度测试模式、材料模式等等。
osg.StateAttribute对于OpenGL绑定状态的开销非常小,它封装了OpenGL状态,并且在启用和禁用它们时,使用了有效的OpenGL API调用。
osg.StateAttribute是一个抽象类,有许多派生类,其中包括:osg::AlphaFunc、osg::BlendFunc、osg::ClipPlane等等。
osg.StateAttribute类是所有osg.StateAttribute派生类的基类。 它定义了一些公共接口和成员变量。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_type | osg::StateAttribute::Type | osg::StateAttribute类型,是一个枚举。 |
m_modeSet | bool | 指示是否显式设置状态。 |
m_released | bool | 指示状态是否被释放并且可以重新使用。 |
方法:
方法名 | 描述 |
---|---|
getType() | 返回StateAttribute类型。 |
getModeSet() | 指示是否显式设置了状态。 |
setModeSet(bool) | 设置状态是否显式设置。 |
getReleased() | 指示状态是否被释放并且可以重新使用。 |
setReleased(bool) | 设置状态是否被释放并且可以重新使用。 |
apply(osg::State&) | 应用状态属性。 |
osg::AlphaFunc是osg.StateAttribute的一个派生类,表示GL_ALPHA_TEST状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_func | GLenum | 等于或大于的Alpha测试功能。 |
m_refValue | GLclampf | 参考alpha值用于比较alpha测试后的结果。 |
方法:
方法名 | 描述 |
---|---|
AlphaFunc() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
getFunc() | 返回alpha测试功能。 |
setFunc(GLenum) | 设置alpha测试功能。 |
getRefValue() | 返回参考alpha值。 |
setRefValue(GLclampf) | 设置参考alpha值,用于比较alpha测试后的结果。 |
apply(osg::State&) | 应用状态属性。 |
osg::BlendFunc是osg.StateAttribute的一个派生类,表示GL_BLEND状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_sfactor | GLenum | 源颜色因子函数。 |
m_dfactor | GLenum | 目标颜色因子函数。 |
m_alphaSFactor | GLenum | Alpha源颜色因子函数。 |
m_alphaDFactor | GLenum | Alpha目标颜色因子函数。 |
方法:
方法名 | 描述 |
---|---|
BlendFunc() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
getSource() | 返回源颜色因子函数。 |
getDestination() | 返回目标颜色因子函数。 |
setFunction(GLenum src, GLenum dest) | 设置源和目标颜色因子函数。 |
getAlphaSource() | 返回Alpha源颜色因子函数。 |
getAlphaDestination() | 返回Alpha目标颜色因子函数。 |
setAlphaFunction(GLenum src, GLenum dest) | 设置Alpha源和目标颜色因子函数。 |
apply(osg::State&) | 应用状态属性。 |
osg::BlendColor是osg.StateAttribute的一个派生类,表示GL_BLEND_COLOR状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_color | osg::Vec4 | 混合颜色。 |
方法:
方法名 | 描述 |
---|---|
BlendColor() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
getColor() | 返回混合颜色。 |
setColor(const osg::Vec4&) | 设置混合颜色。 |
apply(osg::State&) | 应用状态属性。 |
osg::CullFace是osg.StateAttribute的一个派生类,表示GL_CULL_FACE状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_mode | GLenum | 裁剪面的方向。 |
方法:
方法名 | 描述 |
---|---|
CullFace() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
getMode() | 返回裁剪面的方向。 |
setMode(GLenum) | 设置裁剪面的方向。 |
apply(osg::State&) | 应用状态属性。 |
osg::Depth是osg.StateAttribute的一个派生类,表示GL_DEPTH_TEST状态和GL_DEPTH_WRITEMASK状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_func | GLenum | 深度测试功能(GL_NEVER,GL_ALWAYS等)。 |
m_mask | GLboolean | 是否允许深度写入(GL_TRUE或GL_FALSE)。 |
m_range | osg::Vec2 | 远近平面(near,far)对应近和远Z范围的线性缩放和偏移量。(1/near,1/far) |
m_units | GLfloat | 用于法线贴图等的深度换算值(默认为1.0)。 |
m_fboAttachment | GLenum | 要将此状态属性附加到的FBO附件点。 |
方法:
方法名 | 描述 |
---|---|
Depth() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setFunction(GLenum) | 设置深度测试功能。 |
getFunction() | 返回深度测试功能。 |
setWriteMask(GLboolean) | 设置是否允许深度写入。 |
getWriteMask() | 返回是否允许深度写入。 |
setRange(float, float) | 设置近和远Z范围的线性缩放和偏移量。 |
getRange() | 返回近和远Z范围的线性缩放和偏移量。 |
setUnits(GLfloat) | 设置用于法线贴图等的深度换算值。 |
getUnits() | 返回用于法线贴图等的深度换算值。 |
setFBOAttachment(GLenum) | 设置要将此状态属性附加到的FBO附件点。 |
getFBOAttachment() | 返回要将此状态属性附加到的FBO附件点。 |
apply(osg::State&) | 应用状态属性。 |
osg::LineWidth是osg.StateAttribute的一个派生类,表示GL_LINE_WIDTH状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_width | GLfloat | 线宽度(默认为1.0)。 |
方法:
方法名 | 描述 |
---|---|
LineWidth() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setWidth(GLfloat) | 设置线宽度。 |
getWidth() | 返回线宽度。 |
apply(osg::State&) | 应用状态属性。 |
osg::Material是osg.StateAttribute的一个派生类,表示材质状态属性。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_ambient | osg::Vec4 | 环境颜色。 |
m_diffuse | osg::Vec4 | 漫反射颜色。 |
m_specular | osg::Vec4 | 镜面反射颜色。 |
m_emission | osg::Vec4 | 自发光颜色。 |
m_shininess | GLfloat | 镜面反射系数(0-128之间)。 |
m_colorMode | GLenum | 模式。默认为GL_AMBIENT_AND_DIFFUSE,包括环境和漫反射颜色。 |
m_transparency | osg::Vec4 | 不透明度。 |
方法:
方法名 | 描述 |
---|---|
Material() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setAmbient(osg::Vec4) | 设置环境颜色。 |
setDiffuse(osg::Vec4) | 设置漫反射颜色。 |
setSpecular(osg::Vec4) | 设置镜面反射颜色。 |
setEmission(osg::Vec4) | 设置自发光颜色。 |
setShininess(GLfloat) | 设置镜面反射系数。 |
setAlpha(osg::Vec4) | 设置不透明度。 |
setAlpha(float) | 设置不透明度(通过缩放rgba分量而不是设置a分量)。 |
setColorMode(GLenum) | 设置材质状态属性的模式。 |
getAmbient() | 获取环境颜色。 |
getDiffuse() | 获取漫反射颜色。 |
getSpecular() | 获取镜面反射颜色。 |
getEmission() | 获取自发光颜色。 |
getShininess() | 获取镜面反射系数。 |
getAlpha() | 获取不透明度。 |
getColorMode() | 获取材质状态属性的模式。 |
apply(osg::State&) | 应用状态属性。 |
osg::PolygonMode是osg.StateAttribute的一个派生类,表示GL_POLYGON_MODE状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_face | GLenum | 多边形面(GL_FRONT,GL_BACK,GL_FRONT_AND_BACK)。默认为GL_FRONT_AND_BACK。 |
m_mode | GLenum | 多边形渲染模式(GL_POINT、GL_LINE或GL_FILL)。默认为GL_FILL。 |
方法:
方法名 | 描述 |
---|---|
PolygonMode() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setMode(GLenum) | 设置多边形渲染模式。 |
getMode() | 返回多边形渲染模式。 |
setFace(GLenum) | 设置多边形面。 |
getFace() | 返回多边形面。 |
apply(osg::State&) | 应用状态属性。 |
osg::ShadeModel是osg.StateAttribute的一个派生类,表示GL_SHADE_MODEL状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_mode | GLenum | 阴影模式(GL_FLAT或GL_SMOOTH)。默认为GL_SMOOTH。 |
方法:
方法名 | 描述 |
---|---|
ShadeModel() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setMode(GLenum) | 设置阴影模式。 |
getMode() | 返回阴影模式。 |
apply(osg::State&) | 应用状态属性。 |
osg::Stencil是osg.StateAttribute的一个派生类,表示GL_STENCIL_TEST状态。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_func | GLenum | 确定是否应该进行模板测试的函数。 |
m_writemask | GLuint | 写入掩码,用于根据掩码更改当前的值和参考值。 |
m_ref | GLuint | 模板参考值。 |
m_mask | GLuint | 模板掩码。 |
m_sfail | GLenum | stencil失败操作。 |
m_zfail | GLenum | 深度失败操作。 |
m_zpass | GLenum | 深度通过操作。 |
m_front | osg::StateAttributeRefPtr | 前向面状态属性。 |
m_back | osg::StateAttributeRefPtr | 后向面状态属性。 |
m_clearFront | bool | 指示是否应该清除前向面的模板缓冲区。 |
m_clearBack | bool | 指示是否应该清除后向面的模板缓冲区。 |
方法:
方法名 | 描述 |
---|---|
Stencil() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setFunction(GLenum, GLuint, GLuint) | 设置模板测试函数和参考值和掩码。 |
setWriteMask(GLuint) | 设置模板写入掩码。 |
setOperation(GLenum, GLenum, GLenum) | 设置模板操作。 |
setFront(osg::StateAttribute*) | 设置前向面状态属性。 |
setBack(osg::StateAttribute*) | 设置后向面状态属性。 |
setClear(bool, bool) | 设置是否清除前向和后向面的模板缓冲区。 |
getFunction() | 获取当前的模板测试函数和参考值和掩码。 |
getWriteMask() | 获取模板写入掩码。 |
getOperation() | 获取当前的模板操作。 |
getFront() | 获取前向面状态属性。 |
getBack() | 获取后向面状态属性。 |
getClearFront() | 获取是否清除前向面的模板缓冲区。 |
getClearBack() | 获取是否清除后向面的模板缓冲区。 |
apply(osg::State&) | 应用状态属性。 |
osg::Texture是osg.StateAttribute的一个派生类,表示纹理属性。
成员变量:
变量名 | 类型 | 描述 |
---|---|---|
m_internalFormat | GLint | 纹理内部格式。 |
m_sourceFormat | GLenum | 纹理源格式。 |
m_sourceType | GLenum | 纹理源类型。 |
m_textureDepth | GLsizei | 纹理深度(3D或CUBE_MAP)。 |
m_textureWidth | GLsizei | 纹理宽度。 |
m_textureHeight | GLsizei | 纹理高度。 |
m_textureBorderWidth | GLint | 纹理边框宽度。 |
m_filter | GLenum | 纹理过滤。 |
m_wrapS | GLenum | S轴变换(纹理坐标)的包装。 |
m_wrapT | GLenum | T轴变换(纹理坐标)的包装。 |
m_wrapR | GLenum | R轴变换(纹理坐标)的包装。 |
m_unRefImageDataAfterApply | bool | 指示是否在为纹理使用图像数据之后不再引用该数据。 |
m_clientStorage | bool | 指示是否应禁止使用服务器映射存储,而应记住TexSubImage调用的指针,以便在必要时正确更新纹理图像。 |
m_data | osg::Referenced* | 指向纹理数据的指针。 |
方法:
方法名 | 描述 |
---|---|
Texture() | 构造函数。 |
getType() | 返回StateAttribute类型。 |
setInternalFormat(GLint) | 设置纹理内部格式。 |
setSourceFormat(GLenum |