读书人

openGL的疑问,该如何处理

发布时间: 2012-04-28 11:49:53 作者: rapoo

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);    }
[解决办法]
探讨

你的矩形是不是比窗口还要大?先画个小点的试试?

读书人网 >C++

热点推荐