环境变量
OSG_GL_ERROR_CHECKING=ON/OFF开启或关闭OpenGL错误检查
OSG_FILE_PATH=<dir>OSG数据目录
OSG_NOTIFY_LEVEL=ALWAYS/FATAL/WARN/NOTICE/DEBUG_INFO/DEBUG_FP/DEBUG/INFO日志输出级别
OSG_DEFAULT_BIN_SORT_MODE=SORT_BY_STATE/SORT_BY_STATE_THEN_FRONT_TO_BACK/SORT_FRONT_TO_BACK/SORT_BACK_TO_FRONT/TRAVERSAL_ORDERRenderBin默认实现
名词理解
- Windowing System 窗口系统:Linux下的X11等
- Graphics Context 图形上下文:描述一个绘图区域(或窗口)上下文
- Window 窗口,窗口系统中的一个窗口
- Scene 场景
类型
- osg::Referenced 负责内存安全策略(同侵入式shared_ptr)
- osg::Object 负责对象安全策略,如IO操作、复制操作
- osg::State OpenGL状态机
- osg::Camera 相机
- osg::View 负责状态与相机
- osgViewer::ViewerBase 负责渲染线程
- osgViewer::View 负责场景的数据加载和事件处理
- osgGA::GUIActionAdapter 负责与操作系统UI的交互
分页管理
相机
注意:相机拥有继承逻辑,相机在嵌套时,有些逻辑需要注意,比如ClearMask
- osg::CullSettings::getInheritanceMask
- osg::CullSettings::getInheritanceMaskActionOnAttributeSetting
- osg::Camera::setClearMask …
- osg::Camera::applyMaskAction
注意:相机不能拥有多个父亲
- osgUtil::CullVisitor::apply
- osgUtil::RenderStageCache::getRenderStage
HUD(head up display)相机
RTT(render to texture)相机
创建RTT相机
着色器
启用osg矩阵、启用osg顶点属性绑定
- osg::GraphicsContext::getState
- osg::State::setUseModelViewAndProjectionUniforms
- osg::State::getUseVertexAttributeAliasing
默认属性绑定
location(默认) var(osg user use) replace(auto)
osg_FrameNumber
osg_FrameTime
osg_DeltaFrameTime
osg_SimulationTime
osg_DeltaSimulationTime
osg_ViewMatrix
osg_ViewMatrixInverse
ftransform() gl_ModelViewProjectionMatrix * gl_Vertex
gl_ModelViewMatrix osg_ModelViewMatrix
gl_ModelViewProjectionMatrix osg_ModelViewProjectionMatrix
gl_ProjectionMatrix osg_ProjectionMatrix
gl_NormalMatrix osg_NormalMatrix
0 gl_Vertex osg_Vertex
1 gl_Normal osg_Normal
2 gl_Color osg_Color
3 gl_MultiTexCoord0 osg_MultiTexCoord0
4 gl_MultiTexCoord1 osg_MultiTexCoord1
5 gl_MultiTexCoord2 osg_MultiTexCoord2
6 gl_MultiTexCoord3 osg_MultiTexCoord3
7 gl_MultiTexCoord4 osg_MultiTexCoord4
8 gl_MultiTexCoord5 osg_MultiTexCoord5
9 gl_MultiTexCoord6 osg_MultiTexCoord6
10 gl_MultiTexCoord7 osg_MultiTexCoord7
11 gl_SecondaryColor osg_SecondaryColor
12 gl_FogCoord osg_FogCoord
StateSet
RenderBinDetail
RenderBin::addRenderBinPrototype 可以添加自定义的
RenderBin::setDefaultRenderBinSortMode 设置默认
RenderBin
DepthSortedBin
RenderingHint
DEFAULT_BIN INHERIT_RENDERBIN_DETAILS 0 “”
OPAQUE_BIN USE_RENDERBIN_DETAILS 0 “RenderBIn”
TRANSPARENT_BIN USE_RENDERBIN_DETAILS 10 “DepthSortedBin”
RenderBinMode
OVERRIDE_RENDERBIN_DETAILS
纹理格式
注意
osg默认会对读取的Image进行缩放(长宽为2的次幂),底层(3.4)使用了gluScaleImage,它同时会对数据进行归一化这里提到。禁止这种行为:osg::Texture::setResizeNonPowerOfTwoHint
osg的裁剪设置默认不包括远近裁剪面osg::CullSettings::DEFAULT_CULLING
- StateGraph状态图
- 根据StateSet Instance 产生
- RenderStage渲染台
- 随相机生成
- RenderBin渲染柜
- 根据StateSet Instance 和其 BinNumber 生成
- 其他
- osg的矩阵是列优先存储的,但乘法是按行优先的逻辑 - -!
- GL_TEXTURE_CUBE_MAP_SEAMLESS 立方纹理边界优化
问题
为什么camera near far 不起作用?
存在自动计算机制。禁止这种行为:osg::Camera::setComputeNearFarMode
为什么子相机接受了Viewport resize事件
附属相机(slave)会接受resize事件。
TextureBuffer使用时的invalid enumerant
使用osg::StateSet::setTextureAttribute而不是osg::StateSet::setTextureAttributeAndModes
粒子
动画
————————————————
版权声明:本文为CSDN博主「chudonghao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24654009/article/details/105129701