OpenGL 常用着色器及基本图元

178 阅读2分钟

常见着色器

1、单元着色器

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

绘制默认OpenGL坐标系下的图形,图形片段都会以一种颜色填充。

2、平面着色器

GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
GLfloat mvp[16] 4*4 变换矩阵

绘制需要应用变换(如:模型,投影变化等)的图形时使用。

3、上色着色器

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

着色器使用在绘制需要变化的图形时,可以传入变换矩阵,颜色会平滑的插入到顶点之间

4、默认光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
GLfloat mvMatrix[16] 4*4 模型矩阵
GLfloat pMatrix[16]  4*4 投影矩阵

着色器使用会产生阴影和光照效果。

5、点光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
GLfloat vLightPos[3] 点光源位置
GLfloat vColor[4]) 漫反射颜色值

着色器使用会产生阴影和光照效果。和默认光源着色器非常类似,区别是光源位置可能是某个特定位置。

6、纹理替换矩阵着色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
GLint nTextureUnit) 纹理单元

着色器使用使用纹理的颜色来进行颜色填充,每个像素点的颜色都来自于纹理。

7、纹理调整着色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint 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、GL_POINTS

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

2、GL_LINES

每一对顶点定义一个线段

3、GL_LINE_STRIP

从第一个顶点依次经过每一个后续顶点绘制的线条

4、GL_LINE_LOOP

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

5、GL_TRIANGLES

每三个顶点定义一个三角形

6、GL_TRIANGLE_STRIP

共⽤一个条带(strip)上的顶点的一组三角形

7、GL_TRIANGLE_FAN

以一个圆形为中心呈扇形排列,共用相邻顶点的一组三角形。

OpenGL的基本绘制单元是点,线,三角形,其他的图形结构都由它们组成。