3

クワッドがレンダリングされないのはなぜですか? glOrtho と glFrustrum を試してみましたが、出力は同じで、黒い画面です。私が理解していることから、このコードは、カメラが位置 (0,0,-3) に設定され、原点を見ていることを示しています。ニア プレーンは -2 (カメラから 1 m) にあります。私は何を間違っていますか?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
//glOrtho (-5,5,-5,5,-5,5);
glFrustum(-5,5,-5,5,1,1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,0,-3,0,0,0,0,1,0);

glColor3f(1.0,1.0,1.0);
glBegin(GL_QUADS);                                  
glVertex3f(-0.5,-0.5,-0.5);
glVertex3f(0.5,-0.5,-0.5);
glVertex3f(0.5,0.5,-0.5);
glVertex3f(-0.5,0.5,-0.5);
glEnd();
// Don't wait start processing buffered OpenGL routines
glFlush();
glutSwapBuffers();
4

1 に答える 1

4

それは私にとってはうまく機能します、あなたのコードの別の部分で何かが間違っているに違いありません。

これが私が使用した完全なコードです:

#include <GL/glut.h>

void display(void) {

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  //glOrtho (-5,5,-5,5,-5,5);
  glFrustum(-5,5,-5,5,1,1000);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(0,0,-3,0,0,0,0,1,0);

  glColor3f(1.0,1.0,1.0);
  glBegin(GL_QUADS);                                  
  glVertex3f(-0.5,-0.5,-0.5);
  glVertex3f(0.5,-0.5,-0.5);
  glVertex3f(0.5,0.5,-0.5);
  glVertex3f(-0.5,0.5,-0.5);
  glEnd();
  // Don't wait start processing buffered OpenGL routines
  glFlush();
  glutSwapBuffers();

}

int main(int argc, char **argv) {
  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);  
  glutInitWindowPosition(200,200);
  glutInitWindowSize(512,512);
  glutCreateWindow("Test");
  glutDisplayFunc(display);

  glutMainLoop();

  return 0;
}

私はそれを次のようにコンパイルしました:

gcc test.cpp -lGL -lglut -lGLU -o test

スクリーンショットは次のとおりです。

ここに画像の説明を入力してください

于 2012-05-19T23:20:30.607 に答える