美文网首页
OpenGL下的固定存储着色器

OpenGL下的固定存储着色器

作者: 君幸食j | 来源:发表于2020-08-13 13:52 被阅读0次

    在开发中,要求不高的话,OpenGL提供的固定存储着色器可以满足我们的要求。这些存储着色器由GLTools的C++类GLShaderManager进行管理,只需要传递不同存储器所需要的数据到参数列表就可以使用了,主要有以下几种存储着色器:

    单位着色器

    • 单位着色器只是简单地使用默认的笛卡尔坐标系(坐标范围(-1.0,1.0))。所有片段都应用同一种颜色,几何图形为实心和未渲染的。
    /*
     参数1: 存储着⾊器种类-单元着⾊器
     参数2: 颜⾊
     */
    GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
    

    平面着色器

    • 平面着色器将统一着色器进行了扩展,允许为几何图形变换指定一个4x4变换矩阵。经常被称为“模型视图投影矩阵”。
    /*
     参数1: 存储着⾊器种类-平⾯着⾊器
     参数2: 允许变化的4*4矩阵
     参数3: 颜⾊
     */
    GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
    

    上⾊着⾊器

    • 上色着色器唯一的Uniform值就是在几何图形中应用的变换矩阵。颜色值将被平滑地插入顶点之间(称为平滑着色)。
    /*
     参数1: 存储着⾊器种类-上⾊着⾊器
     参数2: 允许变化的4*4矩阵
     */
    GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
    

    默认光源着⾊器

    • 默认光源着色器本质上是着色器使对象产生阴影和光照的效果。
    /*
     参数1: 存储着⾊器种类-默认光源着⾊器
     参数2: 模型4*4矩阵
     参数3: 投影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]);
    

    纹理替换矩阵着⾊器

    • 纹理替换矩阵着⾊器通过给定的模型视图投影矩阵,使用绑定到nTextureUnit指定的纹理单元的纹理对几何图形进行变换。片段颜色是直接从纹理样本中直接获取的。
    /*
     参数1: 存储着⾊器种类-纹理替换矩阵着⾊器
     参数2: 模型4*4矩阵
     参数3: 纹理单元
     */
    GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat 
    mvMatrix[16],GLint nTextureUnit);
    

    纹理调整着⾊器

    • 纹理调整着⾊器将一个基本色乘以一个自纹理单元nTextureUnit的纹理。
    /*
     参数1: 存储着⾊器种类-纹理调整着⾊器
     参数2: 模型4*4矩阵
     参数3: 颜⾊值
     参数4: 纹理单元
     */
    GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat 
    mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
    

    纹理光源着⾊器

    • 纹理光源着色器将一个纹理通过漫反射照明计算进行调整(相乘),光线在视觉空间中的位置给定的。
    /*
     参数1: 存储着⾊器种类-纹理光源着⾊器
     参数2: 模型4*4矩阵
     参数3: 投影4*4矩阵
     参数4: 点光源位置
     参数5: 颜⾊值(⼏何图形的基本⾊)
     参数6: 纹理单元
     */
    GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G
    Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat 
    vBaseColor[4],GLint nTextureUnit);
    

    相关文章

      网友评论

          本文标题:OpenGL下的固定存储着色器

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