2017-03-21 12 views
0

私はOpenGLで最初であり、3Dグラフィック表示で球を描きたい。球を描いている間に描画がOpenGLで動作しない

最初のステップでは、結果の球に含まれるベルトを描きたいだけです。 しかし結果はありません。私の結果ウィンドウはすべて白でクリアされています。

私のコードに問題はありますか?私はそれが基本的な質問ですけど、私は私のコードが動作しない理由を考えて知ってい

void init(); 
void display(); 
void drawPath(int pi, int theta); 
void drawQuad(int pi, int theta); 

int we = -80; // - 파이 
int kyong = -180; // - 세타 

int main(int argc, const char * argv[]) { 
    glutInit(&argc, (char**)argv); 
    glutInitWindowSize(500, 500); 
    glutCreateWindow("Prog09 - Goo"); 
    glutDisplayFunc(display); 

    init(); 
    glutMainLoop(); 

    return 0; 
} 

void init(){ 
    glClearColor(1, 1, 1, 1); 
    glOrtho(0, 50, 0, 50, -50, 50); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glEnable(GL_DEPTH_TEST); 
} 
void display(){ 
    glColor3f(1.0, 1.0, 1.0); 

    drawPath(0, 0); 
} 

void drawPath(int pi, int theta){ 
    drawQuad(pi, theta); 
} 

void drawQuad(pi, theta){ 
    int i; 
    GLfloat x[4],y[4],z[4]; 

// theta = (theta * 3.14)/180; 
// pi = (pi * 3.14)/180; 

    x[0] = sin(theta)*cos(pi); 
    y[0] = cos(theta)*sin(pi); 
    z[0] = sin(pi); 

    x[1] = sin(theta)*cos(pi+20); 
    y[1] = cos(theta)*sin(pi+20); 
    z[1] = sin(pi+20); 

    x[2] = sin(theta+20)*cos(pi+20); 
    y[2] = cos(theta+20)*sin(pi+20); 
    z[2] = sin(pi+20); 

    x[3] = sin(theta+20)*cos(pi); 
    y[3] = cos(theta+20)*sin(pi); 
    z[3] = sin(pi); 


    for (i = 0; i < 4; i++) { 
     glBegin(GL_POLYGON); 
     glVertex3f(x[i]*10, y[i]*10, z[i]*10); 
     glEnd(); 

    } 
    glFlush(); 

    for (i = 0; i < 4; i++) { 
     printf("%d. %f %f %f\n",i+1, x[i], y[i], z[i]); 
    } 
    printf("WHY?\n"); 
} 

は、ここに私のコードです。 ご協力いただきありがとうございます。

+0

:ような何か? – BDL

答えて

0

あなたはポリゴンの数を描いている、各多角形は、1つのポイントが含まれていた。

for (i = 0; i < 4; i++) { 
    glBegin(GL_POLYGON); 
    glVertex3f(x[i]*10, y[i]*10, z[i]*10); 
    glEnd(); 
} 

あなたがすべてポイントでポリゴンを描画する場合は、あなたが行う必要があるでしょう私はあなたが「クワッドを描きながら...」あなたがお聞きしたい場合がありますので、ここで球を描画しようとする場所がわからないんだけど

glBegin(GL_POLYGON); 
for (i = 0; i < 4; i++) { 
    glVertex3f(x[i]*10, y[i]*10, z[i]*10); 
} 
glEnd(); 
+0

!!ありがとう!あなたは私のコードセーバーです!それはあまりにも愚かな質問でしたXD ありがとうもう一度ありがとう:) – DevFallingstar

+0

この答えはあなたの問題を解決した場合は、受け入れられた答えとしてマークしてください? – skalarproduktraum

+0

申し訳ありませんが返信します。私は1分待っていたので、私は忘れてしまった。 T.T お返事ありがとう、良いコーディング時間があります:) – DevFallingstar

関連する問題