zoukankan      html  css  js  c++  java
  • 学习OpenGL:笔记五

    绘制一个正方体

    正方体其实就是由6个矩形组成的几何体,X,Y,Z轴上各两个矩形。

    先绘制X轴上两个矩形

    - (void)drawXPlanes {
        static GLfloat triangleData[] = {
    // X轴0.5处的平面
          0.5,  -0.5,    0.5f, 1,  0,  0,
          0.5,  -0.5f,  -0.5f, 1,  0,  0,
          0.5,  0.5f,   -0.5f, 1,  0,  0,
          0.5,  0.5,    -0.5f, 1,  0,  0,
          0.5,  0.5f,    0.5f, 1,  0,  0,
          0.5,  -0.5f,   0.5f, 1,  0,  0,
    // X轴-0.5处的平面
          -0.5,  -0.5,    0.5f, 1,  0,  0,
          -0.5,  -0.5f,  -0.5f, 1,  0,  0,
          -0.5,  0.5f,   -0.5f, 1,  0,  0,
          -0.5,  0.5,    -0.5f, 1,  0,  0,
          -0.5,  0.5f,    0.5f, 1,  0,  0,
          -0.5,  -0.5f,   0.5f, 1,  0,  0,
        };
        [self bindAttribs:triangleData];
        glDrawArrays(GL_TRIANGLES, 0, 12);
    }

    效果如下图:
                                                      

    接下来绘制Y轴和Z轴上的两个矩形:

    - (void)drawYPlanes {
        static GLfloat triangleData[] = {
            -0.5,  0.5,  0.5f, 0,  1,  0,
            -0.5f, 0.5, -0.5f, 0,  1,  0,
            0.5f, 0.5,  -0.5f, 0,  1,  0,
            0.5,  0.5,  -0.5f, 0,  1,  0,
            0.5f, 0.5,   0.5f, 0,  1,  0,
            -0.5f, 0.5,  0.5f, 0,  1,  0,
             -0.5, -0.5,   0.5f, 0,  1,  0,
             -0.5f, -0.5, -0.5f, 0,  1,  0,
             0.5f, -0.5,  -0.5f, 0,  1,  0,
             0.5,  -0.5,  -0.5f, 0,  1,  0,
             0.5f, -0.5,   0.5f, 0,  1,  0,
             -0.5f, -0.5,  0.5f, 0,  1,  0,
        };
        [self bindAttribs:triangleData];
        glDrawArrays(GL_TRIANGLES, 0, 12);
    }
    
    - (void)drawZPlanes {
        static GLfloat triangleData[] = {
            -0.5,   0.5f,  0.5,   0,  0,  1,
            -0.5f,  -0.5f,  0.5,  0,  0,  1,
            0.5f,   -0.5f,  0.5,  0,  0,  1,
            0.5,    -0.5f, 0.5,   0,  0,  1,
            0.5f,  0.5f,  0.5,    0,  0,  1,
            -0.5f,   0.5f,  0.5,  0,  0,  1,
            -0.5,   0.5f,  -0.5,   0,  0,  1,
            -0.5f,  -0.5f,  -0.5,  0,  0,  1,
            0.5f,   -0.5f,  -0.5,  0,  0,  1,
            0.5,    -0.5f, -0.5,   0,  0,  1,
            0.5f,  0.5f,  -0.5,    0,  0,  1,
            -0.5f,   0.5f,  -0.5,  0,  0,  1,
        };
        [self bindAttribs:triangleData];
        glDrawArrays(GL_TRIANGLES, 0, 12);
    }

    效果如图:

                                                 

    练习的代码

  • 相关阅读:
    BOM与DOM的区别与联系
    HTTP与HTTPS的区别
    总结一下C++与C#之间的区别
    点标记(lambda表达式+linq查询标记符)与linq语句(查询表达式)
    java多线程:继承Thread和实现Runable接口的区别
    打印BroadcastReceiver的所有接受者
    修改apk里面的源码
    关于启动模式中的问题
    onSaveInstanceState和onRestoreInstanceState()
    Options Menu的android3.0以上和以下版本显示刷新原理,刷新适配
  • 原文地址:https://www.cnblogs.com/neverMore-face/p/10143359.html
Copyright © 2011-2022 走看看