【问题标题】:Creating a L shape in openGL在 openGL 中创建 L 形
【发布时间】:2014-04-07 09:22:26
【问题描述】:

我想创建一个“L”形,所以基本上是 2 个长方体,我可以做到这一点,但希望能够使用我努力实现的 vertices 方法来创建它..

谁能帮忙?

float vertices[8][3] = {

    { 0, 2, 0.5 }, 
    { 0.5, 2, 0.5 },
    { 0.5, 0, 0.5 }, 
    { 0, 0, 0.5 },
    { 0, 2, -0.5 }, 
    { 0.5, 2, -0.5 },
    { 0.5, 0, -0.5 }, 
    { 0, 0, -0.5 }

};

//set up the array of colours
float colours[6][3] = {

    { 1.0, 0.0, 1.0 }, 
    { 0.5, 0.0, 0.0 },
    { 0.0, 1.0, 0.0 }, 
    { 0.0, 0.5, 0.0 },
    { 0.0, 0.0, 1.0 }, 
    { 0.0, 0.0, 0.5 }

};

void polygon(int a, int b, int c, int d, int colour) {

    glColor3fv(colours[colour]);
    glBegin(GL_POLYGON);
    glVertex3fv(vertices[a]);
    glVertex3fv(vertices[b]);
    glVertex3fv(vertices[c]);
    glVertex3fv(vertices[d]);
    glEnd();
    glColor3f(1.0, 1.0, 1.0);
    glBegin(GL_LINE_LOOP);
    glVertex3fv(vertices[a]);
    glVertex3fv(vertices[b]);
    glVertex3fv(vertices[c]);
    glVertex3fv(vertices[d]);
    glEnd();

}

void cube() {

    polygon(0, 3, 7, 4, 0); // left
    polygon(1, 5, 6, 2, 1);// right
    polygon(0, 4, 5, 1, 2);// bottom
    polygon(3, 2, 6, 7, 3);// top
    polygon(0, 1, 2, 3, 4); // near
    polygon(4, 7, 6, 5, 5);// far

}

【问题讨论】:

    标签: opengl graphics cube angle


    【解决方案1】:

    计算面数和顶点数并不难。如果要制作“L”形,则首先计算三角形面的数量。每个三角形面需要三个顶点,因此顶点的总数将是三角形面数 * 3。 为简单起见,您可以使用两个立方体。立方体包含 12 个三角形面和总共 36 个顶点。 多维数据集的数据是

    float vertexData[12][3] = {
    //  X     Y     Z      
    // bottom
    {-1.0f,-1.0f,-1.0f},
    { 1.0f,-1.0f,-1.0f},
    {-1.0f,-1.0f, 1.0f},
    { 1.0f,-1.0f,-1.0f},
    { 1.0f,-1.0f, 1.0f},
    {-1.0f,-1.0f, 1.0f},
    
    // top
    {-1.0f, 1.0f,-1.0f},
    {-1.0f, 1.0f, 1.0f},
    { 1.0f, 1.0f,-1.0f},
    { 1.0f, 1.0f,-1.0f},
    {-1.0f, 1.0f, 1.0f},
    { 1.0f, 1.0f, 1.0f},
    
    // front
    {-1.0f,-1.0f, 1.0f},
    { 1.0f,-1.0f, 1.0f},
    {-1.0f, 1.0f, 1.0f},
    { 1.0f,-1.0f, 1.0f},
    { 1.0f, 1.0f, 1.0f},
    {-1.0f, 1.0f, 1.0f},
    
    // back
    {-1.0f,-1.0f,-1.0f},
    {-1.0f, 1.0f,-1.0f},
    { 1.0f,-1.0f,-1.0f},
    { 1.0f,-1.0f,-1.0f},
    {-1.0f, 1.0f,-1.0f},
    { 1.0f, 1.0f,-1.0f},
    
    // left
    {-1.0f,-1.0f, 1.0f},
    {-1.0f, 1.0f,-1.0f},
    {-1.0f,-1.0f,-1.0f},
    {-1.0f,-1.0f, 1.0f},
    {-1.0f, 1.0f, 1.0f},
    {-1.0f, 1.0f,-1.0f},
    
    // right
     {1.0f,-1.0f, 1.0f},
     {1.0f,-1.0f,-1.0f},
     {1.0f, 1.0f,-1.0f},
     {1.0f,-1.0f, 1.0f},
     {1.0f, 1.0f,-1.0f},
     {1.0f, 1.0f, 1.0f},
     };
    

    你这个数据来绘制立方体。你可以缩放和旋转立方体来制作“L”形。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2020-07-04
      相关资源
      最近更新 更多