2014-04-07 50 views
-2

我想創建一個基本上爲2個長方體的「L」形狀,我可以做很長的路,但希望能夠使用我試圖實現的頂點方法創建它。在openGL中創建一個L形

任何人都可以幫忙嗎?

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 

} 

回答

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

你這個數據繪製cube.You可以縮放和旋轉立方體,使「L」形。