openGL的疑问
我用DEV c++学习OpenGl,用的是glut工具包,输入下面程序代码(很简单的代码)
#include <windows.h>
#include<gl/glut.h>
static GLfloat spin = 0.0f;
void init(void){
glClearColor(0.0f,0.0f,0.0f,0.0f);
glShadeModel(GL_FLAT);
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(spin,0.0f,0.0f,1.0f);
glColor3f(0.0f,0.0f,0.0f);
glRectf(-25.0f,25.0f,25.0f,-25.0f);
glPopMatrix();
glutSwapBuffers();
}
void spinDisplay(void){
spin = spin+2.0f;
if(spin>360.0f)
spin = spin-360.0f;
glutPostRedisplay();
}
void reshape(int w,int h){
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0f,50.0f,-50.0f,50.0f,-1.0f,-1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void mouse(int button,int state,int x,int y){
switch(button){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN)
glutIdleFunc(spinDisplay);
break;
case GLUT_MIDDLE_BUTTON:
if(state==GLUT_DOWN)
glutIdleFunc(NULL);
break;
default:break;
}
}
int main(int argc,char **argv){;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(300,300);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
}
没有编译错误,但是为什么弹出来的窗口只显示了白色的背景(理应是黑色背景),没有图形(白色矩形)?帮忙看看是为什么哦,系统是win7 32bit旗舰版。
[解决办法]
楼主要看看初始化是否成功了
[解决办法]
你的矩形是不是比窗口还要大?先画个小点的试试?
[解决办法]
LZ把display函数改为如下即可:
- C/C++ code
void display(void){ glClear(GL_COLOR_BUFFER_BIT); glClearColor(1.0,1.0,1.0,0.0); glColor3f(0.0f,0.0f,0.0f); glPointSize(4.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0,640.0,0.0,480.0); glPushMatrix(); glRotatef(spin,0.0f,0.0f,1.0f); glColor3f(0.0f,0.0f,0.0f); glRectf(-25.0f,25.0f,25.0f,-25.0f); glPopMatrix(); glutSwapBuffers();}
[解决办法]
同时,init函数改为:
- C/C++ code
void init(void){ //glClearColor(0.0f,0.0f,0.0f,0.0f); glClearColor(1.0,1.0,1.0,0.0); glColor3f(0.0f,0.0f,0.0f); glShadeModel(GL_FLAT); }
[解决办法]