三维引擎设计-渲染层封装(Osg渲染层结构)

                                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

三维引擎设计-渲染层封装(Osg渲染层结构)的相关文章

三维引擎设计-图形窗口封装

一:概述: 每个操作系统都有自己的图形系统,三维引擎会抽象出一个窗口,然后通过继承的方式,子类分别封装不同平台下面的窗口,另外,三维图形API也支持将内容渲染到其他表面上,比如纹理中,所以三维引擎也会抽象出一个纹理,再通过继承的方式,由子类分别封装不同图形API的纹理. 窗口和纹理,都可以看成一个抽象的画布,接收三维引擎的结果渲染到这个画布上,总体来说,一个抽象的画布,代表抽象的窗口或纹理,不同平台和图形API下的窗口和纹理又子类实现.这是三维引擎封装窗口系统的一种方法. 二:OSG的设计: 1

三维引擎设计-多线程渲染(平台API基础和封装大致框架)

第一部分: Linux线程API基础 一:线程创建与结束 (1)pthread_t //线程的标识符类型 (2)pthread_create //用来创建一个线程, 参数线程标识符, 线程属性, 线程运行函数地址 (3)pthread_join //用来等待一个线程的结束, 参数被等待线程标识符,用户自定义指针 (4)pthread_exit //线程非正常结束,参数线程返回代码 二:修改线程属性 (1)pthread_attr_t //线程属性结构类型 (2)pthread_attr_init

三维引擎设计专题--文字的渲染

第一部分: 基础概念: 1: 先想想文字在计算机内怎么表示, 经过前辈们的努力, 有两种表示方法, 一种是点阵字体, 即二维数组, 表示字体像素信息, 点阵字体缺点是很难进行缩放, 常见的格式有bdf,pcf,fnt,hbf. 另外一种是矢量字体, 一个文字通过数学曲线来描述, 字体渲染引擎解析这些矢量数据, 常见的格式有type1, treeType, freeType. 2: 其次,字体在计算机内存储格式已经定义好了, 想想字体存储与解析这么基础的东西, 肯定已经成为操作系统的一部分了. 对

三维引擎设计专题--大气散射特效

在做GIS时, 地球周围会有一个大气圈, 大气散射, 这个方面的算法是计算机图形学界不断深入研究的领域, 不过目前有几个成熟的散射算法. 我借鉴了<<GPU精粹2.高性能图形芯片和通用计算机编程技巧>>第16章的算法,实现了一个大气散射. 效果如图. 图中蓝色的天空,就是散射的效果, 具体算法请自行查看书上的算法吧. 步骤: 1: 创建一个椭球, 生成顶点,与顶点索引数组.  这个椭球生成算法后续贴出来. 2: 根据算法传递uniform, 运行shader 3:关于影像,高程的处

cocos-lua基础学习(四)quick层封装后的目录结构

命名空间 cc cocos2d核心类 ccb cocosbuilder扩展 ccs cocostudio扩展 cocos2d目录结构 bitExtend.lua cocos2d.lua cocos2dConstants.lua funtions.lua 提供一组常用函数,以及对 Lua 标准库的扩展 json.lua json的编码与解码 luaj.lua Lua与Java之间的交互接口 luaoc.lua Lua与Objective-c之间的交互接口 Opengl.lua OpenglCons

设计行业的新宠——云渲染

无论是对任职设计岗位的人员还是专业的设计公司来说,3D渲染,都是工作中极其重要的一步.在做过渲染后,设计的作品才能展现出它最接近真实世界的状态. 但是由于渲染实质上是对大量数据的处理,所以渲染这项工作对电脑硬件的要求非常高.个人设计工作者常常配备一台高性能的电脑主机,设计或影视后期企业则选择架设高性能的服务器来满足需求. 通常渲染的效果和速度,都依赖于显卡的图形处理性能,配备高端显卡的电脑,将会大大提升工作效率.但是随着影视.游戏.动画等产业的发展,无论是观众还是制作者,对图形质量的要求也越来越

osg 渲染ifc数据-测试

直接使用osg渲染ifc数据,提高渲染速度. #include "teslamanage.h" #include <QtWidgets/QApplication> #include <QtGui/QIcon> #include <osgViewer/Viewer> osg::ref_ptr<osg::Node> createLand(int widthParam, int heightParam, int zParam); void lo

一款小游戏引擎设计

前言 本文为后续引擎提炼定下了一个大致的方向,没有给出完整的引擎架构.这就够了!让我们在具体开发过程中再来从底向上设计吧! 本文目的 1.进行引擎提炼的前期规划,明确引擎提炼的整体流程和引擎的非功能性需求.2.从炸弹人领域模型中提炼出精简的领域模型,作为炸弹人的参考模型.3.从炸弹人参考模型中提炼出抽象的领域模型,作为引擎的初步领域模型. 本文主要内容 前期规划 回顾炸弹人设计 初步设计引擎 前期规划 开发流程 引擎提炼的整个流程如下图所示: 说明 • 回顾炸弹人游戏介绍炸弹人游戏的基本情况,回

VC++实战《星际传奇》网游课程第一部分网络游戏开发基础篇(游戏引擎设计)

本系列课程基于最新的DirectX11接口进行深入细致的讲解,内容涉及D3D11原理与应用.DirectInput.DirectSound等: 教程中专门针对新兴的D3D11接口展开深入的讲解,详细讲解了D3D11渲染管线.DirectComputer(参看<VC++游戏开发系列之Directcomputer并行计算原理与实践--DX11游戏实战开发>).Tessellation.多线程渲染.Shader动态链接等新内容.新知识.并且基于这些内容的基础,更进一步讲解了光照模型原理及实现.高级的