美文网首页
OpenGL基本图元和固定管线

OpenGL基本图元和固定管线

作者: 苍天兄弟 | 来源:发表于2019-05-22 17:58 被阅读0次

    OpenGL的7种基本图元

    图元 描述
    GL_POINTS 每个顶点在屏幕上都是单独点
    GL_LINES 每一对顶点定义一个线段
    GL_LINE_STRIP 一个从第一个顶点依次经过每一个后续顶点而绘制的线条
    GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后一个顶点和第一个顶点连接起来了
    GL_TRIANGLES 每3个顶点定义一个新的三角形
    GL_TRIANGLE_STRIP 共用一条带(strip)上的顶点的一组三角形
    GL_TRIANGLE_FAN 以一个圆点为中心呈扇形排列,共用相邻顶点的一组三角形
    基本图元.png
    创建投影的方式
    
         GLFrustum类通过SetPerspective方法构建一个透视投影
         参数1: 垂直方向上的视场角度
         参数2: 窗口宽度与高度的纵横比
         参数3: 近裁剪面距离
         参数4: 远裁剪面距离
        viewFrustum.SetPerspective(<#float fFov#>, <#float fAspect#>, <#float fNear#>, <#float fFar#>)
        //GLFrustum类通过SetOrthographic方法构建一个正投影
        viewFrustum.SetOrthographic(<#GLfloat xMin#>, <#GLfloat xMax#>, <#GLfloat yMin#>, <#GLfloat yMax#>, <#GLfloat zMin#>, <#GLfloat zMax#>)
    

    固定管线着色器

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

    相关文章

      网友评论

          本文标题:OpenGL基本图元和固定管线

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