【简版——第四节】 你好,三角形

来源:互联网 发布:淘宝没发货店铺没了 编辑:程序博客网 时间:2024/05/01 10:20

图形渲染管线((图形输送管道) ) 可以被划分为两个主要部分: 第一部
分把你的3D坐标转换为2D坐标, 第二部分是: 把2D坐标转变为实际的有颜色
像素。

注意: 2D坐标和2D像素也是不同的, 2D坐标精确表示一个点在2D空间中
的位置, 而2D像素是这个点的近似值, 2D像素受到你的屏幕/窗口分辨率的
限制。

图形渲染管线接受一组3D坐标, 然后把它们转变为你屏幕上的有色2D像素输出图形渲染管线可以被划分为几个阶段每个阶段将会把前一个阶段的输出作为输入。

着色器程序:是在GPU上为每一个(渲染管线)阶段运行各自的小程序, 从而在图形渲染管线中快速处理你的数据。

OpenGL着色器是用OpenGL着色器语言(OpenGL Shading Language, GLSL)写成
的。

图形渲染管线包含很多部分, 每个部分都将在转换顶点数据最终像素这一过程中处理各自特定的阶段。

● 首先, 我们以数组的形式传递3个3D坐标作为图形渲染管线的输入, 用来表
示一个三角形, 这个数组叫做**顶点数据(**Vertex Data);

顶点数据是一系列顶点的集合。 一个顶点(Vertex)是一个3D坐标的数据的集合。 而顶点数据是用顶点属性(Vertex Attribute)表示的, 它可以包含任何我们想用的数据。

● 我们需要给OpenGL 提示, 表示希望这些顶点数据表示的是什么类型, 这些提示叫做图元(基本图形),任何一个绘制指令的调用都将把图元传递给OpenGL。 这是其中的几个:GL_POINTS、 GL_TRIANGLES、 GL_LINE_STRIP。

● 在现代OpenGL中, 我们必须定义至少一个顶点着色器和一个片段着色器(因为GPU中没有默认的顶点/片段着色器) 。

注意: OpenGL不是简单地把所有的3D坐标变换为屏幕上的2D像素OpenGL仅当3D坐标在3个轴(x、 y和z) 上都为-1.0到1.0的范围内时才处理3D坐标。 所有在这个范围内的坐标叫做标准化设备坐标(normalized devicecoordinates) 会最终显示在你的屏幕上(所有出了这个范围的都不会显示) 。

注意: 一旦你的顶点坐标已经在顶点着色器中处理过, 它们就应该是标准化设备坐标了, 标准化设备坐标是一个x、 y和z值在-1.0到1.0的一小段空间。 任何落在范围外的坐标都会被丢弃/裁剪, 不会显示在你的屏幕上。

●注意: 你的标准化设备坐标接着会变换为屏幕空间坐标(Screen-space Coordinates),这是使用你通过glViewport函数提供的数据, 进行视口变换(ViewportTransform)完成的。 所得的屏幕空间坐标又会被变换为片段输入到片段着色器中。

● 定义这样的顶点数据以后, 我们会把它作为输入发送给图形渲染管线的第一个处理阶段: 顶点着色器。 它会在GPU上创建内存用于储存我们的顶点数据, 还要配置OpenGL如何解释这些内存, 并且指定其如何发送给显顶点着色器接着会处理我们在内存中指定数量的顶点。

原创粉丝点击