我正试图在屏幕上画一个正方形,但它清楚地绘制了一个矩形。
这是我的渲染代码:
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);
为什么会这样?
答案 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)。