OpenGL 固定管线

2019-05-18  本文已影响0人  ChiLeung

OpenGL固定管线下的存储着色器类型

1.单元着色器

GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);

参数1: 存储着色器种类-单元着色器

参数2: 颜⾊

使⽤用场景: 绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充

2.平⾯着⾊器

GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);

参数1: 存储着色器种类-平⾯着色器 

参数2: 允许变化的4*4矩阵

参数3: 颜⾊

3.上色着色器

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化).

GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);

参数1: 存储着色器种类-上⾊着色器 

参数2: 允许变化的4*4矩阵

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 颜色将会平滑地插入到顶点之间 称为平滑着色.

4.默认光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);

参数1: 存储着⾊器种类-默认光源着⾊器 

参数2: 模型4*4矩阵

参数3: 投影4*4矩阵

参数4: 颜色值

使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着色器会使绘制的图形产生阴影和光照的效果.

5.点光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);

参数1: 存储着色器种类-点光源着⾊器 

参数2: 模型4*4矩阵

参数3: 投影4*4矩阵

参数4: 点光源的位置

参数5: 漫反射颜色值

使⽤用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产⽣阴影和光照的效果.它与默认光源着⾊器⾮常类似,区别只是光源位置是特定的.

6.纹理替换矩阵着⾊器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);

参数1: 存储着⾊器种类-纹理替换矩阵着色器 

参数2: 模型4*4矩阵

参数3: 纹理单元

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵.使用纹理单元来进⾏颜色填充.其中每个像素点的颜色是从纹理中获取.

7.纹理调整着⾊器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);

参数1:  存储着⾊器种类-纹理调整着⾊器

参数2:  模型4*4矩阵

参数3:  颜色值

参数4:  纹理单元

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着色器通过给定的模型视图投影矩阵. 着⾊器将一个基本色乘以一个取⾃纹理单元nTextureUnit的纹理.将颜色与纹理进行颜色混合后才填充到片段中.

8.纹理光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);

参数1: 存储着色器种类-纹理光源着色器 

参数2: 模型4*4矩阵

参数3: 投影4*4矩阵

参数4: 点光源位置

参数5: 颜色值(⼏何图形的基本色)

参数6: 纹理单元

使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将⼀个纹理通过漫反射照明计算进行调整(相乘).



OpenGL 基本7种基本图元

OpenGL 基本图元

下面的图示中,常用的是1,2,3,7,8,9

1.GL_POINTS

描述:每个顶点在屏幕上都是单独点

示例

2.GL_LINES

描述:每一对顶点定义一个线段

示例(这里只出现一条线段是因为这个组成这个线段的点是两两对应的,案例中只有三个点,所以只能生成一条线)

3.GL_LINE_STRIP

描述:⼀个从第一个顶点依次经过每一个后续顶点而绘制的线条

示例

4.GL_LINE_LOOP

描述:和GL_LINE_STRIP相同,但是最后⼀个顶点和第一个顶点连接起来了

示例

5.GL_TRIANGLES

描述:每3个顶点定义一个新的三角形

示例

6.GL_TRIANGLE_STRIP(三⻆形带)

描述:共用一个条带(strip)上的顶点的一组三⻆角形。对于很多表面或者形状而言,我们会需要绘制⼏个相连的三⻆形. 这是我们可以使用GL_TRIANGLE_STRIP图元绘制一串相连三角形,从⽽节省⼤量的时间.

优点:

1. ⽤前3个顶点指定第1个三⻆形之后,对于接下来的每⼀个三⻆形,只需要再指定1个顶点。需要绘制⼤量的三⻆形时,采⽤这种⽅法可以节省大量的程序代码和数据存储空间

2.提供运算性能和节省带宽。更少的顶点意味着数据从内存传输到图形卡的速度更快,并且顶点着色器需要处理的次数也更少了。

示例

7.GL_TRIANGLE_FAN(三⻆形扇)

描述:以一个圆点为中心呈扇形排列,共用相邻顶点的一组三角形。对于很多表面或者形状而言,我们会需要绘制几个相连的三⻆形. 这时我们可以使用GL_TRIANGLE_FAN图元绘制⼀组围绕⼀个中⼼点相连的三角形


示例



上一篇 下一篇

猜你喜欢

热点阅读