OpenGL:GL_QUADS不绘制方形

时间:2012-08-15 14:29:22

标签: c++ opengl sdl glu

我正试图在屏幕上画一个正方形,但它清楚地绘制了一个矩形。

这是我的渲染代码:

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

为什么会这样?

2 个答案:

答案 0 :(得分: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 tutorial它会帮助你开始使用OpenGL来处理非常基本的东西,比如绘制三角形,正方形等基本元素......

答案 1 :(得分:0)

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

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