Dr.Wing

心翼的技术笔记本

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

绘图效果是在黑色的背景上,绘制一个白色的矩形,要注意的问题如下,先看第一个程序:

 1 #define GLUT_DISABLE_ATEXIT_HACK
2 #include <gl/glut.h>
3
4 void display(void)
5 {
6 glClear(GL_COLOR_BUFFER_BIT);
7 glRectf(-0.5f,-0.5f,0.5f,0.5f);
8 glutSwapBuffers();
9 //glFlush();
10 }
11
12 int main()
13 {
14 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); //整个顺序是显示模式->窗体设置(位置和尺寸)->然后创建窗口->调用函数->MainLoop()
15 glutInitWindowPosition(100,100);
16 glutInitWindowSize(400,400);
17 glutCreateWindow("The first");
18 glutDisplayFunc(&display);
19 glutMainLoop();
20 return 0;
21 }

首先是第一行,#define GLUT_DISABLE_ATEXIT_HACK 是一定要加在 #include <gl/glut.h>上。然后可以发现,我们能够直接写上int main() 不需要往括号里面再写很多参数,甚至也不需要glutInit(&argc, argv);这一句;

在编写中,我用了GLUT_DOUBLE双缓存,在display()函数中,用的是glFlush()函数,结果发觉绘制出来的矩形很奇怪。。。于是我查了一下相关资料,发现:

GLUT_DOUBLE要用glutSwapBuffers()

GLUT_SINGLE要用glFlush()

posted on 2011-08-01 16:51  心翼  阅读(176)  评论(0编辑  收藏  举报