美文网首页
OpenGL 渲染结构、投影与着色器

OpenGL 渲染结构、投影与着色器

作者: _涼城 | 来源:发表于2020-07-18 18:29 被阅读0次
    OpenGL渲染结构
    基础图形管线
    OpenGL渲染架构.jpg
    客户机-服务器

    客户机存储在CPU存储器中,并且在应用程序中执行,或者在驱动程序中执行。驱动程序将渲染命令与数据组合起来,并发送到服务器执行。实际上,服务器就是图形加速卡上的硬件和内存。

    传递渲染数据方法
    • 属性(attirbutes)

      顶点数据、投影矩阵、模型矩阵、纹理坐标等

    • Uniform值

      变化矩阵,通道,颜色值

    • 纹理(TextureData)

      纹理数据,一般都是直接传递给片元处理器(Vertex Shader)

    着色器文件类型
    • .vsh顶点着色器代码

    • .fsh片元着色器代码

    投影方式
    正投影

    通常在2D绘图中使用正投影。在正投影中,所有在这个空间范围内的所有东西都会被显示在屏幕上。

    GLFrustum::SetOrthographic(GLfloat xMin,GLfloat xMax,GLfloat yMin,GLfloat yMax,GLFloat zMin,GLfloat zMax);
    
    透视投影

    通常在立体绘图中使用透视投影。透视投影会进行透视除法对距离观察者很远的对象进行缩短和收缩。GLFrustum类 通过调用SetPerspective方法为我们构建一个平截头体。

    GLFrustum::SetPerspective(float fFov,float fAspect,float fNear,float fFar);
    
    着色器
    固定着色器
    1. 单元着色器 GLT_SHADER_IDENTITY使用场景:绘制默认笛卡尔坐标系(-1,1)。图形所有片段都会以一种颜色填充。

      GLShaderManager::UseStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
      
    2. 平面着色器 GLT_SHADER_FLAT使用场景:在绘制图形时,可以应用4*4变化矩阵(模型/投影变化)。

      GLShaderManager::UseStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
      
    3. 上色着色器GLT_SHADER_SHADED使用场景:在绘制图形时,可以应用4*4矩阵变化(模型/投影变化),颜色将会平滑地插入到顶点之间(称为平衡着色)。

      GLShaderManager::UseStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
      
    4. 默认光源着色器GLT_SHADER_DEFAULT_LIGHT使用场景:在绘制图形时,可以应用4*4矩阵变化(模型/投影变化),将会使绘制的图形产生阴影和光照的效果。需要模型视图矩阵、投影矩阵和作为基本色的颜色值。

      GLShaderManager::UseStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
      
    5. 点光源着色器GLT_SHADER__LIGHT_DIEF使用场景:在绘制图形时,可以应用4*4矩阵变化(模型/投影变化),将会使绘制的图形产生阴影和光照的效果,区别是光源位置是特定的。

      GLShaderManager::UseStockShader(GLT_SHADER__LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
      
    6. 纹理替换矩阵着色器GLT_SHADER_TEXTURE_REPLACE使用场景:在绘制图形时,可以应用4*4矩阵变化(模型/投影变化),使用纹理单元来进行颜色填充,其中每个像素点的颜色是从纹理中获取。

      GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
      
    7. 纹理调整着色器GLT_SHADER_TEXTURE_MODULATE这种着色器将一个基本色乘以一个取自纹理单元nTextureUnit的纹理。

      GLShaderManager::UseStockShader(GLT_SHADER_TEXTURE_MODULAT,GLfloat mvMatrix[16],GLfloat vColor,GLint nTextureUnit);
      
    8. 纹理光源着色器GLT_SHADER__TEXTURE_POINT_LIGHT_DIEF这种着色器将一个纹理通过漫反射照明计算进行调整,光线在视觉空间中的位置是给定的。

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

    相关文章

      网友评论

          本文标题:OpenGL 渲染结构、投影与着色器

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