OpenGL:GL_QUADS不绘制正方形
我想在屏幕上绘制正方形,但它清楚地绘制了一个矩形。OpenGL:GL_QUADS不绘制正方形
这是我的渲染代码:
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);
这究竟是为什么?
我没有看到你的代码在哪里设置了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非常基本的东西,如绘制图元,如三角形,正方形等...
谢谢。我不知道什么glViewPort做的,但投给GLfloat做了我的诡计。 – 2012-08-15 21:03:46
好吧,我刚刚读过,当OpenGL上下文首先被附加到一个窗口,宽度和高度被设置为该窗口的尺寸,所以它可能是没有必要的。至于glViewport命令,它定义了从规范化设备坐标的变换(即后投影矩阵坐标与应用透视分割)到窗口坐标 – tiguero 2012-08-15 21:35:28
尝试使用gluOrtho2D
来生成一个正确的正交投影矩阵,在你的情况下gluOrtho2D(0,640,0,480)
,这是假设你想要一个正方形在2D而不是3D。
这当然会将您的坐标系从(0,1),(0,1)改变为(0,640),(0,480)。
也许您的屏幕水平dpi不匹配垂直dpi? – 2012-08-15 14:31:48
屏幕的dpi不会影响他的屏幕截图。 – Tim 2012-08-15 14:33:37
我不知道我做了什么,但它现在正常绘制方块。我没有改变任何东西,所以我不知道什么是错的。只是宇宙拖动我我猜:( – 2012-08-15 14:34:40