c++ - OpenGL:GL_QUADS 不绘制正方形

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

为什么会这样?

最佳答案

我在您的代码中没有看到您设置 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 来绘制非常基本的东西,例如绘制三角形、正方形等图元...

关于c++ - OpenGL:GL_QUADS 不绘制正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971192/

相关文章:

c++ - 通过检测图像中的特定大对象或 Blob 来裁剪图像?

opengl - GLSL从modelviewmatrix和viewmatrix中提取modelmatrix

c - 不执行 for 循环的最后一行并且完成后不退出 - C

c++ - 我将如何为下一次迭代清理 SDL_surface 中的翻转图像?

c++ - Mex 函数未解析的外部

c++ - 返回一个枚举,看不懂这行代码

c++ - sdl_image 找不到我的jpg图片;不会加载

c++ - SDL2 + ffmpeg2 间歇性点击而不是音频

c++ - 纹理不渲染

opengl - 绘制不同尺寸的FBO