美文网首页
[OpenGL] - 图元

[OpenGL] - 图元

作者: coder_xiaoyu | 来源:发表于2018-04-17 21:25 被阅读0次

    1.存储着色器 GLShaderMananger

    1.1 单位着色器

    GLShaderManager::UserStockShader(GLT_ATTRIBUTE_VERTEX,GLfloat vColor[4]);
    

    1.2 平面着色器

    /*
    参数2:模型视图投影矩阵
    */
    GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
    

    1.3 上色着色器

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

    1.4 默认光源着色器

    /*
    参数2:模型视图矩阵
    参数3:投影矩阵
    */
    GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
    

    1.5 点光源着色器

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

    1.6 纹理替换矩阵

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

    1.7 纹理调整着色器

    GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
    

    1.8 纹理光源着色器

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

    2.OpenGL图元

    2.1 点

    2.2 线


    image.png

    2.3 线带


    image.png

    2.4 线环


    image.png

    2.5 三角形


    image.png

    2.6 三角形金字塔

    //通过三角形创建金字塔
        GLfloat vPyramid[12][3] = {
            -2.0f, 0.0f, -2.0f,
            2.0f, 0.0f, -2.0f,
            0.0f, 4.0f, 0.0f,
            
            2.0f, 0.0f, -2.0f,
            2.0f, 0.0f, 2.0f,
            0.0f, 4.0f, 0.0f,
            
            2.0f, 0.0f, 2.0f,
            -2.0f, 0.0f, 2.0f,
            0.0f, 4.0f, 0.0f,
            
            -2.0f, 0.0f, 2.0f,
            -2.0f, 0.0f, -2.0f,
            0.0f, 4.0f, 0.0f};
    

    2.7 三角形带


    image.png

    2.8 三角形扇


    image.png
    1. 通过GLBatch帮助类定义图形
    /*
    批次类开始
    参数1:图元类型
    参数2:顶点数量
    */
    void GLBatch::Begin(GLenum primitive, GLuint nVerts, GLuint nTextureUnits = 0);
    /*
    复制顶点到批处理中
    */
    void GLBatch::CopyVertexData3f(M3DVector3f *vVerts);
    /*
    批次类结束
    */
    void GLBatch::End(void);
    

    相关文章

      网友评论

          本文标题:[OpenGL] - 图元

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