2016-06-13 1 views
0

私はOpenGLでスケートボードの四分の一のパイプを描いていますが、最後のステップを理解することはできません。OpenGLにはまだ新しいので、これはほんの些細な問題です私は見落としている。今私が持っているコードはOpenGL - Skateboarding Quarter Pipeを入力してください

enter image description here

とクォーターパイプを描画するために、この機能を使用しています(色を気にしない、私たちはクラスではまだテクスチャをカバーしていない)、次を生成します。

void draw_quarterpipe() 
{ 
    // Quarterpipe Ramp 
    glBegin(GL_QUAD_STRIP); 
    glColor3f(0, 0, 1); 
    for (int i=-90; i <= 0; i++) 
    { 
     glVertex3f(Cos(i), Sin(i)+1, -1); 
     glVertex3f(Cos(i), Sin(i)+1, 1); 
    } 
    glEnd(); 


    // Coping 
    glBegin(GL_QUAD_STRIP); 
    glColor3f(0, 1, 1); 
    for (int i = 0; i <= 360; i++) 
    { 
     glVertex3f((Cos(i) * 0.025) + 1, (Sin(i) * 0.025) + 1, -1); 
     glVertex3f((Cos(i) * 0.025) + 1, (Sin(i) * 0.025) + 1, 1); 
    } 
    glEnd(); 


    // Coping End Cap 
    glBegin(GL_POLYGON); 
    glColor3f(0.5, 0, 0.5); 
    for (int i = 0; i <= 360; i++) 
    { 
     glVertex3f((Cos(i) * 0.025) + 1, (Sin(i) * 0.025) + 1, 1); 
    } 
    glEnd(); 


    // Coping End Cap 
    glBegin(GL_POLYGON); 
    glColor3f(0.5, 0, 0.5); 
    for (int i = 0; i <= 360; i++) 
    { 
     glVertex3f((Cos(i) * 0.025) + 1, (Sin(i) * 0.025) + 1, -1); 
    } 
    glEnd(); 


    // Platform 
    glBegin(GL_QUADS); 
    glColor3f(0, 1, 0); 
    glVertex3f(1, 0, 1); 
    glVertex3f(1, 0, -1); 
    glVertex3f(1, 1, -1); 
    glVertex3f(1, 1, 1); 
    glEnd(); 

    glBegin(GL_QUADS); 
    glColor3f(0, 1, 0); 
    glVertex3f(1.5, 0, 1); 
    glVertex3f(1.5, 0, -1); 
    glVertex3f(1.5, 1, -1); 
    glVertex3f(1.5, 1, 1); 
    glEnd(); 

    glBegin(GL_QUADS); 
    glColor3f(1, 1, 0); 
    glVertex3f(1, 0, 1); 
    glVertex3f(1, 1, 1); 
    glVertex3f(1.5, 1, 1); 
    glVertex3f(1.5, 0, 1); 
    glEnd(); 

    glBegin(GL_QUADS); 
    glColor3f(1, 1, 0); 
    glVertex3f(1, 0, -1); 
    glVertex3f(1, 1, -1); 
    glVertex3f(1.5, 1, -1); 
    glVertex3f(1.5, 0, -1); 
    glEnd(); 

    glBegin(GL_QUADS); 
    glColor3f(1, 0, 0); 
    glVertex3f(1, 1, 1); 
    glVertex3f(1, 1, -1); 
    glVertex3f(1.5, 1, -1); 
    glVertex3f(1.5, 1, 1); 
    glEnd(); 

} 

ランプとプラットフォームの間のスペースを埋めるための最後のステップが分かっていたのでしょうか?

答えて

0

にしようとするあなたをお勧めします。.. :)

あなたはストリップあなたからコーディネート切り替わ収集することができます

// Quarterpipe Ramp 
glBegin(GL_QUAD_STRIP); 
glColor3f(0, 0, 1); 
for (int i=-90; i <= 0; i++) 
{ 
    glVertex3f(Cos(i), Sin(i)+1, -1); 
    glVertex3f(Cos(i), Sin(i)+1, 1); 
} 
glEnd(); 

glBegin(GL_TRIANGLE_FAN); 
glColor3f(0, 1, 1);  
//(1) Point from left bottom of the square as a centre (need correction of point) 
    glVertex3f(1, 0, 1); 
//(2) Coordinates of your triangle fan 
    for (int i=-90; i <= 0; i++) 
     glVertex3f(Cos(i), Sin(i)+1, 1);   
glEnd(); 

参考画像

enter image description here

0

私はあなたがほとんどありGL_POLYGONOpenGL primitives

+0

GL_POLYGONでは、*凹面多角形である必要があります。あなたが見ることができるように、彼が描こうとしているのは非常に*凸です*。 –

関連する問題