OSG渲染层封装
OpenGL_API可以大致分成这样几个部分:
1:顶点操作(立即模式,显示列表,顶点数组,顶点缓冲区),
2:纹理(一维纹理,二维纹理,三维纹理,天空盒),
3:灯光(类型,光源,光照模型) ,
4:着色器(顶点着色器,片段着色器,一致变量,属性变量),
5:帧缓冲区(渲染缓冲区),
6:状态(Alpha校验,Blending混合,模板测试,裁剪测试,深度测试,雾,光栅化设置),
7:API扩展管理等。
Osg封装了上述大部分操作。由于OpenGL是个状态机,上述API操作可视为对状态的一种改变,Osg依照这个思路,把OpenGL操作看成是渲染状态的变换,渲染状态有进一步分为渲染属性(Attributre),和渲染模式(Mode),继而渲染状态可由场景节点共享。
下面罗列下Osg对OpenGL封装的类。
一:StateAttribute(OpenGL状态属性)
|-AlphFunc(透明操作) |-BlendEquation(混合方程) |-BlendFunc(混合操作) |-BufferIndexBinding(缓冲区索引管理) |-ClampColor(颜色截取操作) |-ColorMask(控制颜色通道绘制) |-ColorMatrix(颜色控制矩阵) |-Depth(深度缓冲区比较)|-Fog(雾设置) |-FragmentProgram(片段着色器) |-FrontFace(正反面设置) |-Light(光类型封装) |-LightModel(光照模型封装) |-LightSource(光源封装) |-LineStipple(点画模式) |-LineWidth(线宽) |-LogicOp(OpenGL逻辑操作) |-Material(材料封装) |-Multisample(多重采样封装)|-Point(点) |-PointSprite(点精灵) |-PolygonMode(多边形填充模式) |-PolygonOffset(多边形偏移) |-PolygonStipple(点话模式) |-PrimitiveRestartIndex |-Program(着色器) |-Scissor(裁剪) |-ShadeModel(着色模式) |-ShaderAttribute(着色器属性变量) |-Stencil(模板测试) |-StencilTwoSided |-TexEnv(纹理环境) |-TexEnvCombine |-TexEnvFilter(纹理过滤)|-TexGen |-TexMat(纹理矩阵) |-Texture(纹理) |-Texture1D |-Texture2D |-Texture2DArray |-Texture2DMultisample |-Texture3D |-TextureBuffer(纹理缓冲区) |-TextureCubeMap(天空盒) |-TextureRectangle(公告板) |-VertexProgram(顶点着色器)
二: 非属性对象封装 |-BufferObject(顶点缓冲区对象) |-FrameBufferObject(帧缓冲区对象) |-PrimitiveSet(绘制原语) |-Shader(着色器源码管理) |-ShaderComposer(着色器管理) |-Uniform(一致变量)
三: OpenGLAPI封装 |-GL(API头文件条件编译) |-GLU(GLU函数封装) |-GLObject(OpenGL内部对象释放) |-GL2Extensions(扩展管理) |-GLExtensions(扩展管理) |-GLBeginEndAdapter(绘制启始结束)
四:Image(像素操作)
|-ImageStream |-ImageSequence
|-ImageUtils
时间: 2024-12-29 05:05:15