学习shader之前必须知道的事情,shader(着色语言)到底发生在那个阶段, OpenGL的渲染管线有哪些阶段
对开发人员来说很重要,也许你刚刚接触,或者你在使用已有的产品,很优秀的游戏引擎,或者渲染引擎,你
觉得知道这个没有太大意义,但知道了这些,总归对你没有坏处。
下图是一个非常简化框图流水线的各个阶段,并在他们之间传播的数据。虽然极其简单,它是足够的着色器编程,
提出了一些重要的概念。固定管线中存在很多阶段,并存在很多细节,这里只是粗略的介绍。
(1)顶点变换:
在这里,一个顶点的属性,如在空间的位置,以及它的颜色,法线,纹理坐标,其中包括一组。这个阶段的输入
的各个顶点的属性。由固定的功能所执行的操作,主要完成一下工作:
1. 顶点位置变换
2. 计算顶点观照
3. 纹理坐标变换
(2)图元装配:
这个阶段的输入的变换后的顶点,以及连通性信息。这后者的一块数据告诉顶点如何连接,以形成一种原始的
绘制数据,这个阶段还负责对视锥裁剪操作,背面剔除。光栅扫描确定的片段,和原始的像素位置。
在此上下文中的片段是一块的数据,将用于更新的像素在帧缓冲区中,在特定的位置。片段包含不仅是颜色,
也法线和纹理坐标,其中包括可能的属性,被用来计算新像素的颜色。上面的顶点变换阶段,计算出的值与顶点连接信息相结合,
允许当前阶段来计算相应的属性的片段。比如,每个顶点的变换位置。当考虑到顶点,使一个原语,
是可以计算的原始片段的位置。另一个例子是,使用的颜色。如果一个三角形,然后用不同的颜色有其顶点的颜
色的三角形内的片段片段的相对的顶点的距离加权的三角形的顶点的颜色插值的方式获得。
(3)纹理映射,着色:
插值片段信息是这一阶段的输入。彩色已经在前一阶段的计算是通过内插法,在这里,它可以结合例如一个纹理像素(纹理元素)。
纹理坐标也已经在前一阶段内插。雾也适用于在这个阶段。每个片段的本阶段的共同的最终结果是一个颜色值和深度的片段。
(4)最后阶段的管道上的片段,进行了一系列的测试:
1. 裁减测试
2.Alpha(透明度)测试
3.模板测试
4.深度测试
通过测试的片段信息,然后用于更新的像素的值,根据当前的混合模式。请注意,混合只发生在这个阶段,因为片段纹理和着色阶段,
有没有访问帧缓冲区。帧缓冲区是唯一能够在这个阶段。
下图很明了的说明了各个阶段的任务:
最后这个图画 的比较丑,大家见谅(ps 基本属于文盲),鉴于本人能力有限,对各个阶段的理解如有不错误
还请指教。
最后,到shader上场了,shader具体在那个阶段呢(现在的shader已经出到第四版本了,增加了很多新功能)
vertex shader(顶点shader)发生在顶点变换阶段,通过顶点shader可以修改一些基本的图元属性,颜色,光照,发现等
fragment shader(片段shader)主要发生在 纹理着色阶段,主要是对上一阶段输出的数据,进行再次加工。
z转自:http://www.cnblogs.com/zhanglitong/p/3238989.html
相关推荐
此"OpenGL快速查找手册-OpenGL-ES-2_0-Reference-card"是一个非常实用的资源,它包含了OpenGL ES 2.0的关键信息,帮助开发者迅速查阅和理解API的使用。参考卡片通常会包括核心功能、函数库、常量定义以及重要概念的...
nvidia发布的 让windows的rdp远程桌面环境也可以使用 GrForce GPU来做终端桌面的OpenGL 加速补丁
OpenGL ES - 渲染图片纹理,学习openg es 2.0技术,opengl es 基础知识
对于像素数据来说,OpenGL渲染管线的处理方式与几何数据略有不同。像素数据首先从系统内存中读取,并进行解包、缩放、偏移等操作。随后,这些数据可能被写入到纹理内存或帧缓冲区。如果数据是从帧缓冲区读取的,则会...
这个“OpenGL-intro-1.1.1”很可能是关于OpenGL的基础教程或介绍,版本号1.1.1可能指的是教程覆盖的OpenGL版本。在早期,OpenGL有多个版本,每个版本都引入了新的特性和改进。OpenGL 1.1.1是较早的版本,但它仍然是...
在“android-openGL-canvas-master.zip”这个项目中,开发者可能结合了这两者,创建了一个示例应用来展示如何在 Android 上使用 OpenGL ES(OpenGL 的嵌入式版本)与 Canvas 进行交互,以实现更高效的图形绘制和动画...
OpenGL-Nehe完整中文教程是一项针对初学者的课程,它是一个经典的入门级教程,用于引导学习者进入OpenGL这个3D图形编程的世界。OpenGL(Open Graphics Library)是一个跨语言、跨平台的应用程序编程接口(API),...
java3d-1_3_1-windows-i586-opengl-sdk.exe
这个"3D-OpenGL-Engine.zip"文件包含了一个基于OpenGL的3D渲染引擎源代码库,名为"OpenGL-Engine-master",是开发者们研究、学习或构建3D应用的理想资源。以下是对OpenGL和3D渲染引擎的一些关键知识点的详细介绍: ...
OpenGL-NaturalEngine是一个基于OpenGL图形库,利用glfw...通过OpenGL-NaturalEngine,开发者和学习者可以深入理解3D图形学、渲染技术以及交互式应用的开发流程,同时,也可以提升他们在C++编程和图形编程方面的能力。
OpenGL-ES是Android平台上用于2D和3D图形渲染的重要库,它是OpenGL的轻量级版本,特别针对嵌入式设备如智能手机和平板电脑进行了优化。在这个项目中,"android opengl-ES 魔方 纹理贴图"的主题涉及到在Android设备上...
了解了OpenGL渲染管线的基本流程之后,接下来我们将讨论如何实现从屏幕坐标到世界坐标的转换。屏幕坐标系统和世界坐标系统之间的转换通常需要逆向操作渲染管线的各个阶段。具体步骤如下: 1. **获取屏幕坐标**:...
qt-opensource-windows-x86-msvc2010_opengl-5.3.0.part10.rar 共11部分 Windows最新版
qt-opensource-windows-x86-msvc2010_opengl-5.3.0.part09.rar 共11部分 Windows最新版
"ubuntu-Qt5.3-OpenGL-teapot"项目正是一个结合了这些技术的实例,对于学习Qt和OpenGL编程非常有帮助。 首先,让我们了解Qt 5.3。这是Qt 5系列的一个版本,引入了许多改进和新特性,如Qt Quick 2、QML的增强、更好...
OpenGL ES渲染管线概述 OpenGL ES渲染管线是图形渲染的核心组件,负责将3D图形渲染到屏幕上。渲染管线可以分为多个阶段,每个阶段都执行特定的任务,包括读取顶点数据、顶点着色器、组装图元、光栅化图元、片元着色...
这个"opengl-test-01-visualstudio"项目可能包含上述部分或全部步骤的实现,通过运行和调试,初学者可以了解OpenGL在Visual Studio中的基本使用方法和图形渲染流程。通过阅读和理解代码,你可以学习到如何在实际项目...
首先,文件标题提到了“OpenGL-Reference-Manual”,这意味着文档是一本关于OpenGL的官方参考手册。接下来,内容中出现了“CUDA”标签,这可能表明手册中将包含CUDA与OpenGL相关的使用或集成信息。不过,具体的...
在"OpenGL-- Shader 颜色 光照 3 光照贴图 LightMap_VS2015"项目中,开发者可能使用Visual Studio 2015作为开发环境,通过OpenGL库实现了LightMap技术。"OGLLightMaps.sln"是Visual Studio的解决方案文件,包含了...
在图形处理领域,OpenGL-ES(OpenGL for Embedded Systems)是一个广泛使用的标准,它为移动设备提供了2D和3D图形渲染的能力。在苹果的平台上,为了简化OpenGL-ES的使用,苹果提供了一个名为GLKit的框架,它为开发者...