美文网首页
渲染管线--固定管线

渲染管线--固定管线

作者: BigBowen | 来源:发表于2019-05-31 13:42 被阅读0次

    OpenGL有固定管线和可编程管线两种

    固定管线

    使用固定管线时,不需要开发者过多的去关心渲染的流程,也不允许去干涉顶点渲染和像素渲染的过程, OpenGL内部会帮我们生成一套完整的渲染流程,我们只需传特定的参数给固定管线,即可完成渲染.接下来看看固定管线中我们一般需要控制那些参数:
    不同的储存着色器所需要的参数不同,以下按照不同着色器来划分

    一.单元着色器
    //使用场景: 绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充
    //参数1: 存储着色器种类-单元着⾊器
    //参数2: 颜⾊
    UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
    
    二.平面着色器
    //使用场景: 在绘制图形时, 可以应用变换(模型/投影变化).
    //参数1: 存储着色器种类-平⾯着⾊器
    //参数2: 允许变化的4*4矩阵
    //参数3: 颜⾊
    UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
    
    三.上色着色器
    //使用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 颜色将会平滑地插入到顶点之间 称为平滑着色
    //参数1: 存储着⾊器种类-上⾊着⾊器
    //参数2: 允许变化的4*4矩阵
    UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
    
    四.默认光源着色器
    //使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产生阴影和光照的效果.
    //参数1: 存储着⾊器种类-默认光源着⾊器
    //参数2: 模型4*4矩阵
    //参数3: 投影4*4矩阵
    //参数4: 颜⾊值
    UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
    
    五.点光源着色器
    //使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产生阴影和光照的效果.它与默认光源着⾊器非常类似,区别只是光源位置可能是特定的.
    //参数1: 存储着⾊器种类-点光源着⾊器
    //参数2: 模型4*4矩阵
    //参数3: 投影4*4矩阵
    //参数4: 点光源的位置
    //参数5: 漫反射颜⾊值
    UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
    
    六.纹理替换矩阵着色器
    //使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵.使用纹理单元来进行颜⾊填充.其中每个像素点的颜色是从纹理中获取
    //参数1: 存储着⾊器种类-纹理替换矩阵着⾊器
    //参数2: 模型4*4矩阵
    //参数3: 纹理单元
    UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
    
    七.纹理调整着色器
    //使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将一个基本色乘以一个取自纹理单元nTextureUnit 的纹理.将颜色与纹理进⾏颜⾊混合后才填充到片段中
    //参数1: 存储着⾊器种类-纹理调整着⾊器
    //参数2: 模型4*4矩阵
    //参数3: 颜⾊值
    //参数4: 纹理单元
    UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
    
    八.纹理调整着色器
    //使用场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将一个纹理通过漫反射照明计算进⾏调整(相乘)
    //参数1: 存储着⾊器种类-纹理光源着⾊器
    //参数2: 模型4*4矩阵
    //参数3: 投影4*4矩阵
    //参数4: 点光源位置
    //参数5: 颜色值(几何图形的基本色)
    //参数6: 纹理单元
    UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
    

    案例

    OpenGL--绘制镜面球体

    相关文章

      网友评论

          本文标题:渲染管线--固定管线

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