OSG(OpenSceneGraphic) 渲染引擎架构--整体认识

本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来,  感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构有个印象就好了, 免得盲人摸象啊, 不过,还好有OSG.

场景相关: Node, Geode, Group, Transform, LOD, Camera,  NodeVisitor, NodeCallback

几何图形: Drawable, PrimitiveSet, Geometry, Shape, TessellationHints, Simplifier,

DelaunayTriangulator, TriStripVisitor, SmoothingVisitor

渲染相关: StateSet, Texture, Light, Material,View, ViewerBase, State, RenderLeaf,

RenderBin, RenderState,SceneView, CullVisitor,Renderer,GraphicsContext,  Text

数据加载: DatabasePager

平台相关: OperationThread, GUIEVentHandler

OSG渲染引擎的核心部件:

渲染流程1:

渲染流程2:

节点访问:

渲染状态排序1:

渲染状态树:

渲染场景视图树:

摄像机,图形设备,渲染器,场景图,场景视图之间的关系:

加载数据的过程:

两种场景结构图对比:

多线程 加载数据时所用的缓冲区:

消息事件处理流程:

图形设备抽象:

先看整体, 然后看局部, Osg的结构会了然于胸.

时间: 2024-08-11 11:55:50

OSG(OpenSceneGraphic) 渲染引擎架构--整体认识的相关文章

OSG(OpenSceneGraphic) 渲染引擎架构--整体认识 [转]

原文:http://blog.csdn.net/zangle260/article/details/41123067?utm_source=tuicool 本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来,  感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构

三维渲染引擎设计与时间(一)

一.初始osg 三维渲染引擎:为了实现三维场景图形的结构管理和绘制而提供的一系列API的集合.包括构建层和交互层. Crystal Space.Java3D.Unreal-- osg库:构件场景图形的场景图形节点类.用作向量和矩阵运算的类:可绘制体和几何体类:用于描述和管理渲染状态的类:以及图形程序所需的典型功能类. osgDB库:用于2D和3D文件读写的插件类注册器,以及用于访问和读写这些插件的特定功能类:数据的动态分页调度机制 osgUtil库:实用工具库.包括场景图形数据统计和优化工具.渲

《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构

前言: 又是一年一度的圣诞节,可这关我什么事呢 :( ,好不容易周末了,还是说说其他的吧,前不久我发布了一篇关于工作流的文章:<程序猿闭门造车>之NBPM工作流引擎 - 开篇,很多爱好工作流的小伙伴对该组件表示感兴趣,所以我打算写一个系列文章来介绍该组件的一些情况,给关心该组件的小伙伴们一些参考和帮助. 先列个目录吧(由于我工作比较忙,只能周末抽空来分享相关资料,进度上还希望大家理解): 01.<程序猿闭门造车>之NBPM工作流引擎 - 开篇02.<程序猿闭门造车>之N

游戏引擎架构逐层分析之渲染引擎篇

既然说到渲染引擎,那就不得不提到Ogre,OSG这两个了,OSG我折腾了两年,Ogre折腾了两年,说是我折腾他们,不如说被他们折磨,这个引擎的复杂度就不说了,相信大家都知道. 上面这个是渲染引擎的第一个组成部分,说是这一层主要实现渲染的能力和丰富度.可以看出来,分成了几个部分,其中Graphics Device Interface没什么说的,基本就是系统提供的操作显卡的接口了. 目前维护的游戏基本没有什么光照系统,后边可以应用的光照系统是什么呢?怎么给场景打光?是否需要动态光照呢?比如太阳,再比

游戏引擎架构

游戏编程分为游戏逻辑和游戏引擎.游戏引擎是一套可重复利用的底层框架.包括渲染引擎.声音引擎.网络引擎等等.现提供一套游戏架构,从底层向上分别为: 硬件.驱动.操作系统. 第三方软件开发包:DirectX.OpenGL,Boost.STL库,Granny.Havok.Animation等. 平台独立层:集合.迭代器.文件系统.网络传输层.线程库.物理碰撞包裹类. 核心系统:模块启动终止.断言.单元测试.内存分配.数学库.调试用打印及日志.性能剖析.引擎配置.异步文件. 资源(游戏资产):三维模型资

游戏引擎架构学习

本书的主页第一部分 基础 第1章 导论1.1 典型游戏团队的结构 工程师:艺术家:游戏设计师:制作人:其他工作人员:发行商&工作室 1.2 游戏是什么 71.3 游戏引擎是什么 101.4 不同游戏类型中的引擎差异 111.5 游戏引擎概观 221.6 运行时引擎架构 271.7 工具及资产管道 46第2章 专业工具 532.1 版本控制 532.2 微软Visual Studio 612.3 剖析工具 782.4 内存泄漏和损坏检测 792.5 其他工具 80第3章 游戏软件工程基础 833.

Chromium浏览器之渲染引擎Blink

Blink是谷歌公司的浏览器Chromium使用的渲染引擎. Blink处于一个包容性的开源社区里,它欢迎任何人分享其使命. Blink是在一种抽象的平台上实现的, 因此本身不能运行. Chromium Content module提供这个抽象平台运行所需的Blink的实现. Content模块的开发有专门的文档描述.有关调试Blink一些提示和建议,请参阅入门Blink调试页面. 需要注意的是Blink的代码必须符合Blink编码风格指南所规定的编码风格. 那么问题来了:我怎么把Blink移植

关于主流浏览器内核(排版引擎)(渲染引擎) 的整理介绍

 前情提要: 众多的浏览器,主流的内核就几个,那么各种浏览器究竟使用的哪种内核,各种内核又有什么优劣,使用浏览器的我们应有适当了解,选择自己喜欢的浏览器. 注 :内容多为查阅网络资料整理,少量个人主观意见,如有错误,谢谢指正. 一.什么是 浏览器内核 谷歌浏览器,火狐浏览器,360浏览器,Safari浏览器,欧朋浏览器,qq,uc,傲游,世界之窗...没错他们是浏览器.什么是浏览器内核呢 ,叫做“内核”基本上可以定义为浏览器最为重要的一部分,那么它的重要在哪里?它的作用是什么? 维基百科上这样解

《游戏引擎架构》读书心得(二)

一.调试技巧及工具 (1)基础调试 a)   日志及追踪,有些bug难以用VS自带的调试来进行单步调试,最好的解决方案就是printf调试法,打印一组数据,观察情况.之前我的做法是单独生成一个控制台,不过VS自带了一个OutPutDebugString()的方法,可以打印调试信息.不过这个只支持char*内容,我们可以将这个函数加工一下,使其支持不同类型的数据,甚至可以使其接受可变参数个数. b)   冗长级别:我们有时想要打印,有时又不想打印,所以可以设置打印内容的级别,每个信息设置一个级别,