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 初始化代码:

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();       

还可以查看第二个Nehe 教程,它将帮助您从 OpenGL 开始,了解非常基本的东西,例如绘制三角形、正方形等基元......

于 2012-08-15T15:03:02.657 回答
0

尝试使用gluOrtho2D生成正确的正交投影矩阵,在您的情况下gluOrtho2D(0,640,0,480),这是假设您想要2D而不是 3D 的正方形。

这当然会将您的坐标系从 (0,1),(0,1) 更改为 (0,640),(0,480)。

于 2012-08-15T15:15:41.837 回答