渲染上下文Rendering Context

渲染描述表,包含一次渲染所需的全部数据。用于提交给游戏渲染引擎的渲染器进行渲染

--------------------------------------------------------------------

如果把渲染引擎看做一个画家,那么画家开始作画之前需要做一系列的准备工作,譬如:布置好场景,摆好画架,钉好画布,调整好灯光,准备号画笔油彩,站好位置,然后才能开始下笔作画。

前期的这一系列准备过程在D3D和Ogl这样的渲染Api中对应了一系列的接口函数,这些函数初看起来又多又乱,有时调用顺序还有一定的耦合性,

因此需要精心的组织这些接口,一种比较好的方法是将这些接口组织成一个叫做渲染上下文(Rendering Context)的类。

这个类中具体包含哪些东西呢,罗列起来可以有这些:

1. 视图设置相关(正交/投影,视口参数设置)

2. 绘制缓冲相关(创建删除缓冲,绑定缓冲,设置当前缓冲,清除缓冲,设置背景颜色)

3. 贴图参数相关(是否使用贴图,贴图Filter模式,Wrap模式,Mipmap等)

4. Shader相关(创建/删除Shader,设置Shader参数)

5. 缓冲数据相关(顶点缓冲,索引缓冲等)

6. 材质相关(Diffuse,Embient,Specular,Emit等)

7. 矩阵相关(World,View,Project等,及相关旋转、平移、缩放操作)

8. 裁剪

9. Alpha(Blend,Test)

10. Stencil-Test

11. Fog

12. 灯光(启用/关闭、灯光参数)

时间: 2024-10-12 12:46:21

渲染上下文Rendering Context的相关文章

CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率

当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditional Rendering) 当我们能够断定一个模型被其他模型挡住(因此不会被Camera看到)时,我们就可以跳过对此模型的渲染.这就是条件渲染的根本. 那么如何去判断?方法就是用一个简单的包围盒(比如一个立方体)去渲染一下,看看fragment是不是有变化(即包围盒上的某些部分通过了depth test,最终渲染到Framebuffer上了).如果没有任何一个fragment发生改变,就说明这个包围盒是被

ZeroMQ接口函数之 :zmq_term - 终结ZMQ环境上下文(context)

ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_term zmq_term(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_term - 终结ZMQ环境上下文(context) Synopsis int zmq_term (void *context); Description zmq_term()函数将终结环境上下文context. 函数 zmq_ctx_term() 会销毁ZMQ环境上下文context. 环境上下文的终止过程会按下

初始化glew,创建OpenGL渲染上下文

1 void RegisterWinDowClass(HINSTANCE hInstance,std::string className,WNDPROC proc) 2 { 3 WNDCLASS wndClass; 4 wndClass.cbClsExtra = 0; 5 wndClass.cbWndExtra = 0; 6 wndClass.hbrBackground = (HBRUSH)::GetStockObject(GRAY_BRUSH); 7 wndClass.hCursor = ::

Unity3d 基于物理渲染Physically-Based Rendering之最终篇

前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-Based Rendering之实现 最后我们用fragment shader 实现,加上diffuse漫反射,代码和之前的surface差不多,只是多了reflect方向的计算,reflect方向的计算方法为用CG函数库中函数reflect, float3 reflect(float3 i, flo

Tomcat部署web项目,虚拟目录,上下文(Context),WEB-INF,web.xml,servlet

Web项目的uri模型大致如下: http://localhost:8080 (/context) (/resource) 站点/上下文/资源 一. Tomcat中指定上下文(Context) 方法一,位于webapps文件夹中的web项目,无需指定Context,Tomcat默认解析为该web项目根文件夹的名称,即为真实目录名称. 方法二,在server.xml中指定Context. 编辑conf\server.xml文件,在元素之间加入子元素,内容如下: <Context docBase=”

《绘图前设置:像素格式——PIXELFORMATDESCRIPT、设备上下文、渲染上下文》

  像素格式——PIXELFORMATDESCRIPT.设备上下文.渲染上下文 在OpenGL对窗口进行渲染之前,必须根据渲染需要对窗口进行配置. 需要硬件渲染还是软件渲染? 渲染使用但缓冲还是双缓冲模式? 是否需要深度缓冲区? 是否需要模板.目标Alpha或累计缓冲区? 当为窗口设置这些参数之后,就无法对它们进行修改.为了从一个只有深度缓冲区和颜色缓冲区的窗口切换到一个带有模板缓冲区的窗口,必须销毁第一个窗口,然后根据需要重新创建一个窗口. 像素格式是OpenGL窗口的重要属性,它包括是否使用

Docker镜像构建上下文(Context)

镜像构建上下文(Context) Dicker在构建镜像时,如果注意,会看到 docker build 命令最后有一个 ... 表示当前目录,而 Dockerfile 就在当前目录,因此不少初学者以为这个路径是在指定 Dockerfile 所在路径,这么理解其实是不准确的.如果对应上面的命令格式,你可能会发现,这是在指定上下文路径.那么什么是上下文呢? 首先我们要理解 docker build 的工作原理.Docker 在运行时分为 Docker 引擎(也就是服务端守护进程)和客户端工具.Doc

OpenGL 渲染上下文-context

context理解 OpenGL在渲染的时候需要一个Context,这个Context记录了OpenGL渲染需要的所有信息,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色.是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性.在OpenGL 3.0版本之前,OpenGL创建Context都是一致的,随着升级会新增一些内容(例如从OpenGL1.1升级到1.5,会新增一些状态变量或者属性,并添加一些设置这些内容的函数),整体上来说没有什么大的变化.但是

unity, 替换shader渲染(Rendering with Replaced Shaders)

实现特效,尤其是一些后处理特效,经常需要将各物体的shader替换为另一套shader进行渲染到纹理,再后再进行合成或以某种叠加方式叠加到最后的画面上去. 再复杂一点儿的,可能不同的物体所用的替换shader还不一样. unity中Camera.RenderWithShader可实现这个功能. 下面是官方文档原话: Rendering with Replaced Shaders Some rendering effects require rendering a scene with a dif