首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

openGL的疑问,该如何处理

2012-04-28 
openGL的疑问我用DEV c++学习OpenGl,用的是glut工具包,输入下面程序代码(很简单的代码)#include windows.

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

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

热点排行