美文网首页
OpenGL固定管线着色器/存储着色器

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

作者: 徐徐图之哈哈 | 来源:发表于2020-07-18 13:42 被阅读0次

在OpenGL核心框架中,并没有提供任何内建渲染管线,在提交一个几何图形进行渲染之前,必须制定一个着色器。目前这些存储着色器由GLTools的C++类GLShaderManager进行管理,这些能够满足通常的渲染的基本要求。而更高级的自定义着色器不在本章讨论的范畴之内,后续会探讨

GLShaderManager的使用

  • 在使用前必须进行初始化
    GLShaderManager shaderManager
    shaderManager.InitializeStockShaders();

Uniform值

  • 要对几何图形渲染,需要为对象递交属性矩阵
  • 想要得到我们期望的结果,必须提供程序的Uniform值绑定到想要使用的着色器程序上
  • GLShaderManager类可以帮我们完成以上工作
  • UseStockShader函数会选择一个存储着色器并提供这个着色器的Uniform值,通过一次函数调用就能完成
    GLShaderManager::UseStockShader(GLT_STOCK_SHADER nShaderID, ...);

注意:在C语言(或者C++语言)中,...表示函数接受一个可变的参数数量

固定着色器

单位着色器

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

注意:

  • OpenGL坐标系范围(-1.0~1.0),所有片段都应用同一种颜色

平面着色器

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

注意:

  • 适合模型视图矩阵,投影矩阵(4 x 4变换矩阵,颜色)

上色着色器

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

注意:

  • 应用在变换矩阵,颜色值被平滑的插入顶点之间(称为平滑着色)(4 x 4变换矩阵,颜色)

默认光源着色器

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

注意:

  • 应用模型视图矩阵,投影矩阵。这种着色器使对象产生阴影和光照的效果(模型4 x 4矩阵,投影4 x 4矩阵,颜色)

点光源着色器

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

注意:

  • 跟默认光源着色器类似。模型视图矩阵,投影矩阵,视点坐标系中的光源位置和对象的基本漫反射颜色

纹理替换矩阵着色器

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

注意:

  • 模型视图投影矩阵,使用绑定到nTextureUnit指定的纹理单元的纹理对几何图形进行变换(模型4 x 4矩阵,纹理单元)

纹理调整着色器

GLShaderManager::UseStockShader(GLT_SHADER_c_MODULATE, GLfloat mvMatrix[16],GLfloat vColor,GLint nTextureUnit);

注意:

  • 将一个基本色乘以一个取自纹理单元nTextureUnit的纹理(模型4 x 4矩阵,颜色,纹理单元)

纹理光源着色器

GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF, GLfloat mvMatrix,GLfloat pMatrix[16],GLfloat vLightPos[3],GLFloat vBaseColor[4],GLint nTextureUnit);

注意:

  • 应用变换矩阵(模型,投影),这种着色器将一个通过慢反射照明计算进行调整(相乘),光线在视觉空间中的位置给定的(模型视图矩阵,投影矩阵,视觉空间中的光源位置,几何图形的基本色和将要使用的纹理单元)

相关文章

  • OpenGL(四): 存储着色器

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

  • OpenGL 固定管线

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

  • OpenGL ES 入门 — 2.GLSL基础

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

  • OpenGL固定管线着色器

    OpenGL固定管线下的着色器包括: 单元着色器(GLT_SHADER_IDENTITY) 平面着色器(GLT_S...

  • OpenGL的一些学习

    资料来源:逻辑教育 OpenGL 固定管线中常见的几种着色器 单元着色器 平面着色器 上色着色器 默认光源着色器 ...

  • OpenGL 固定管线下的着色器

    OpenGL 固定管线下为开发者提供了几种着色器:单元着色器、平面着色器、上色着色器、默认光源着色器、点光源着色器...

  • OpenGL基本图元和固定管线

    OpenGL的7种基本图元 创建投影的方式 固定管线着色器 单元着色器 平面着色器 上色着色器 默认光源着色器 点...

  • OpenGL固定管线

    固定管线/存储着色器初始化 单元着色器 使用场景:绘制默认OpenGL 坐标系(-1,1)下的图形,图形所有片段都...

  • OpenGL入门(二)-基本图元绘制

    OpenGL与着色器 在OpenGL 3.0之前,OpenGL包含一个固定功能的管线,它可以在不使用着色器的情况下...

  • OpenGL 学习之渲染基础

    一、OpenGL与着色器 在OpenGL3.0之前,OpenGL包含一个固定功能的管线,它可以在不使用着色器的情况...

网友评论

      本文标题:OpenGL固定管线着色器/存储着色器

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