【发布时间】:2014-10-02 17:27:07
【问题描述】:
下面是我显示实心球体的代码。我用 ModelMatrix 来显示。但我无法看到固体。是否应该添加投影之类的东西。但我目前不需要预测。
#include <stdlib.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include<windows.h>
static void Init() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
}
static void display() {
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3d(1,1,0);
glutSolidSphere(3,4,4);
}
int main(int argc, char** argv) {
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
glutInitWindowSize( 550, 550);
glutInitWindowPosition( 50, 50);
glutCreateWindow( "Balloon");
glutDisplayFunc(display);
Init();
glutMainLoop();
return 0;
}
【问题讨论】:
-
我看到了一些可能导致您的问题的事情。首先,在显示函数结束时,您需要调用 glutSwapBuffers()。这会将前缓冲区与后缓冲区(您绘制的缓冲区)交换,以便显示。第二件事是您需要在显示函数的开头调用 glClear 来清除前一帧的内容。此外,如果您的模型视图和投影矩阵都是单位矩阵,那么可显示的坐标将从 -1 到 1,因此很可能您的球体对于您当前的矩阵来说太大了。