美文网首页
OpenGL代码注释2.1

OpenGL代码注释2.1

作者: 数字d | 来源:发表于2019-05-15 11:36 被阅读0次

    一、基础代码注释

    1.定义一个着色器管理器,全局变量

    GLShaderManager     shaderManager;
    

    2.定义一个模型视图矩阵,全局变量

    GLMatrixStack       modelViewMatrix;
    

    3.定义一个投影矩阵,全局变量

    GLMatrixStack       projectionMatrix;
    

    4.定义一个相机视角,观察者位置,全局变量

    GLFrame             cameraFrame;
    

    5.定义世界坐标位置,全局变量

    GLFrame             objectFrame;
    

    6.定义一个视景体,全局变量,用来构造投影矩阵

    GLFrustum           viewFrustum;
    

    7.几何变换管道

    GLGeometryTransform transformPipeline;
    

    二、SetupRC()初始化函数代码注释

    1.设置灰色背景

        glClearColor(0.7f, 0.7f, 0.7f, 1.0f );
    

    2.着色器初始化

        shaderManager.InitializeStockShaders();
    

    3.开启深度测试

        glEnable(GL_DEPTH_TEST);
    

    4.设置变换管线以使用两个矩阵堆栈

        transformPipeline.SetMatrixStacks(modelViewMatrix, projectionMatrix);
    

    5.移动观察者位置

        cameraFrame.MoveForward(-20.0f);
    

    7.构造二维数组散点集合

        GLfloat vCoast[24][3] = {
            {2.80, 1.20, 0.0 }, {2.0,  1.20, 0.0 },
            {2.0,  1.08, 0.0 },  {2.0,  1.08, 0.0 },
            {0.0,  0.80, 0.0 },  {-.32, 0.40, 0.0 },
            {-.48, 0.2, 0.0 },   {-.40, 0.0, 0.0 },
            {-.60, -.40, 0.0 },  {-.80, -.80, 0.0 },
            {-.80, -1.4, 0.0 },  {-.40, -1.60, 0.0 },
            {0.0, -1.20, 0.0 },  { .2, -.80, 0.0 },
            {.48, -.40, 0.0 },   {.52, -.20, 0.0 },
            {.48,  .20, 0.0 },   {.80,  .40, 0.0 },
            {1.20, .80, 0.0 },   {1.60, .60, 0.0 },
            {2.0, .60, 0.0 },    {2.2, .80, 0.0 },
            {2.40, 1.0, 0.0 },   {2.80, 1.0, 0.0 }};
    

    8.构造二维数组金字塔点集合

    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};
     
    

    三、用点集合构造图元

    1. \color{red}{GL\_POINTS} \color{black}{表示每个顶点在屏幕上都是单独点}

        pointBatch.Begin(GL_POINTS, 24);
        pointBatch.CopyVertexData3f(vCoast);
        pointBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.08.48.png

    2. \color{red}{ GL\_LINES } 表示每一对顶点定义⼀个线段

        lineBatch.Begin(GL_LINES, 24);
        lineBatch.CopyVertexData3f(vCoast);
        lineBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.09.05.png

    3. \color{red}{ GL\_LINE\_STRIP } ⼀个从第一个顶点依次经过每⼀个后续顶点⽽绘制的线条

        lineStripBatch.Begin(GL_LINE_STRIP, 24);
        lineStripBatch.CopyVertexData3f(vCoast);
        lineStripBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.09.14.png

    4. \color{red}{ GL\_LINE\_LOOP} 和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来

         lineLoopBatch.Begin(GL_LINE_LOOP, 24);
        lineLoopBatch.CopyVertexData3f(vCoast);
        lineLoopBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.09.23.png

    5. \color{red}{ GL\_TRIANGLES } 每3个顶点定义⼀个新的三角形实际效果旋转后是金字塔

        triangleBatch.Begin(GL_TRIANGLES, 12);
        triangleBatch.CopyVertexData3f(vPyramid);
        triangleBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.22.12.png

    6. \color{red}{ GL\_TRIANGLE\_STRIP } 共⽤⼀个条带(strip)上的顶点的一组三角形

        pointBatch.Begin(GL_TRIANGLE_STRIP, 24);
        pointBatch.CopyVertexData3f(vCoast);
        pointBatch.End();
    

    \color{gray}{效果:}

    [图片上传中...(屏幕快照 2019-05-15 上午11.23.11.png-ee1739-1557891368868-0)]

    7. \color{red}{ GL\_TRIANGLE\_FAN } 以一个圆点为中心呈扇形排列,共⽤相邻顶点的⼀组三角形

        pointBatch.Begin(GL_TRIANGLE_FAN, 24);
        pointBatch.CopyVertexData3f(vCoast);
        pointBatch.End();
    

    \color{gray}{效果:}

    屏幕快照 2019-05-15 上午11.23.11.png

    四、图元对照表快查


    屏幕快照 2019-05-15 上午11.45.25.png

    参考来源:https://www.jianshu.com/p/981e6c278dac

    相关文章

      网友评论

          本文标题:OpenGL代码注释2.1

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