3

画面に正方形を描こうとしていますが、明らかに長方形を描いています。

これは私のレンダリングコードです:

glClear(GL_COLOR_BUFFER_BIT);
glTranslatef(0,0,-0.1);
glBegin(GL_QUADS);
    glVertex3f(0,0,0);
    glVertex3f(1,0,0);
    glVertex3f(1,1,0);
    glVertex3f(0,1,0);
glEnd();

SDL_GL_SwapBuffers();

そして OpenGL Init コード:

glClearColor(0,0,0,0.6f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30,640.0/480.0,.3f,200.0);
glMatrixMode(GL_MODELVIEW);

なぜこうなった?

4

2 に答える 2

6

glViewportを設定したコードのどこにも表示されません。私はむしろあなたのinitメソッドでこのようなものを書きます:

glViewport(0,0,640,480);        // Reset The Current Viewport

glMatrixMode(GL_PROJECTION);    // Select The Projection Matrix
glLoadIdentity();               // Reset The Projection Matrix

// Calculate The Aspect Ratio Of The Window
gluPerspective(30.0f,(GLfloat)640/(GLfloat)480,0.3f,200.0f);

glMatrixMode(GL_MODELVIEW);     // Select The Modelview Matrix
glLoadIdentity();       

また、2番目のNeheチュートリアルを確認してください。これは、三角形、正方形などのプリミティブの描画など、非常に基本的なものについてOpenGLから始めるのに役立ちます。

于 2012-08-15T15:03:02.657 に答える
0

gluOrtho2Dを使用して正しい正射影行列を生成してみてください。この場合、これは3Dではなく2DgluOrtho2D(0,640,0,480)の正方形が必要であると想定しています。

もちろん、これにより座標系が(0,1)、(0,1)から(0,640)、(0,480)に変更されます。

于 2012-08-15T15:15:41.837 に答える