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图元绘制⼀组围绕⼀个中⼼点相连的三角形

示例

网友评论