美文网首页
你知道固定管线下有哪些存储着色器吗?

你知道固定管线下有哪些存储着色器吗?

作者: 夜里昙花现 | 来源:发表于2019-05-28 09:59 被阅读0次

在OpenGL 3.0之前,OpenGL包含一个固定功能的管线,它可以在不适用着色器的情况下,处理几何与像素数据。而在3.1版本开始,固定管线从核心模式去掉,因此,现在需要使用着色器来完成工作。那么,固定管线下到底有哪些着色器呢?下面,我们一起来看一看吧。

  • 使用存储着色器,我们不需要关心它的底层是如何实现的,因为它已经帮我们封装好了,直接使用即可。它们有8种,分别是:
    (1)单元着色器
    (2)平面着色器
    (3)上色着色器
    (4)默认光源着色器
    (5)点光源着色器
    (6)纹理替换矩阵
    (7)纹理调整着色器
    (8)纹理光源着色器
    接下来,我们来简单了解下这几种存储着色器着色器,具体的使用会在后续博客中来继续分析。

在这之前,我们先看下怎么定义和初始化存储着色器:

//定义存储着色器
GLShaderMananger shaderMananger;
//初始化存储着色器
shaderMananger.initalizeStockShaders();

1.单元着色器

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

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

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

2.平面着色器

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

参数1:GLT_SHADER_FLAT 存储着色器种类-平面着色器
参数2:允许变化的4*4矩阵
参数3:颜色

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

3.平面着色器

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

参数1:GLT_SHADER_SHADED 存储着色器种类-上色着色器
参数2:允许变化的4*4矩阵

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

4.默认光源着色器

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

参数1:GLT_SHADER_DEFAULT_LIGHT 存储着色器种类-默认光源着色器
参数2:模型44矩阵
参数3:投影4
4矩阵
参数4:颜色值

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

5.点光源着色器

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

参数1:GLT_SHADER_DEFAULT_LIGHT_DIEF 存储着色器种类-点光源着色器
参数2:模型44矩阵
参数3:投影4
4矩阵
参数4:点光源位置
参数5:漫反射的颜色值

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

6.纹理替换矩阵着色器

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

参数1:GLT_SHADER_TEXTURE_REPLACE 存储着色器种类-纹理替换矩阵着色器
参数2:模型4*4矩阵
参数3:纹理单元

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

7.纹理调整着色器

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

参数1:GLT_SHADER_TEXTURE_MODULATE 存储着色器种类-纹理调整着色器
参数2:模型4*4矩阵
参数3:颜色值
参数4:纹理单元

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

8.纹理调整着色器

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

参数1:GLT_SHADER_TEXTURE_MODULATE 存储着色器种类-纹理光源着色器
参数2:模型44矩阵
参数3:投影4
4矩阵
参数4:点光源位置
参数5:颜色值(几何图形的基本色)
参数6:纹理单元

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

  • 喏,以上就是固定管线下的8种存储着色器啦,如果还有什么缺漏的,欢迎留言纠正,谢谢!

后面的博客会用一个Demo简单的使用以上存储着色器,欢迎关注。

相关文章

  • 你知道固定管线下有哪些存储着色器吗?

    在OpenGL 3.0之前,OpenGL包含一个固定功能的管线,它可以在不适用着色器的情况下,处理几何与像素数据。...

  • OpenGL(四): 存储着色器

    OpenGL存储着色器 在OpenGL 3.0 之前,OpenGL包含固定功能的管线,这些固定管线(或者叫存储着色...

  • OpenGL 固定管线

    OpenGL固定管线下的存储着色器类型 1.单元着色器 GLShaderManager::UserStockSha...

  • OpenGL ES 入门 — 2.GLSL基础

    在OpenGL 3.0之前,OpenGL 使用的是固定渲染管线,使用存储着色器完成渲染,存储着色器就是写好了着色程...

  • 《OpenGL ES: (四)着色器语言》

    关于着色器 着色器是用来实现图像渲染的,用来替代固定渲染管线的可编程程序。着色器替代了传统的固定渲染管线,可以实现...

  • 着色器语言GLSL

    关于着色器 着色器是用来实现图像渲染的,用来替代固定渲染管线的可编程程序。着色器替代了传统的固定渲染管线,可以实现...

  • GLSL着色器语言相关知识

    一、关于着色器 着色器是用来实现图像渲染的,用来替代固定渲染管线的可编程程序。着色器替代了传统的固定渲染管线,可以...

  • OpenGL 固定管线/存储着色器

    管线: 在OpenGL 下渲染图形,就会有经历一个一个节点.⽽这样的操作可以理解为管线.大家可以想象成流⽔线.每个...

  • OpenGL 固定存储器着⾊器理解 第二节(二)

    OpenGL 固定存储器着⾊器理解 Shader整体式封闭的,中间的各道工艺按固定的流程顺序走。 固定管线着色器看...

  • 四、OpenGL的存储着色器

    OpenGL提供了一些能够实现某些渲染功能的固定管线,即存储着色器。这些管线只能拿来直接使用,不支持自定义编程,接...

网友评论

      本文标题:你知道固定管线下有哪些存储着色器吗?

      本文链接:https://www.haomeiwen.com/subject/slxrtctx.html