#include <windows.h> // windows系统要加这个。因为下面2个头文件的一些宏是在这个文件中定义的 #include <gl/Gl.h> #include <gl/glut.h> //这两个头文件在OpenGL程序中几乎必加。 //<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>> 初始化 void myInit(void) { glClearColor(1.0,1.0,0.0,0.9); // 设置背景色:白色。前三个参数分别代表红绿蓝分量。 glColor3f(1.0f, 0.0f, 0.0f); // set the drawing color glPointSize(4.0); // 点的大小为4*4像素 glMatrixMode(GL_PROJECTION); // glLoadIdentity(); gluOrtho2D(0.0, 640.0, 0.0, 480.0);// 指定绘图时采用的坐标系统 } //<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>> 绘制 void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); // 将屏幕清除为背景色 glBegin(GL_POINTS); glVertex2i(100, 50); // 这里我们画3个点。 glVertex2i(100, 130); glVertex2i(150, 130); glEnd(); glBegin(GL_POLYGON); glVertex2i(200, 50); // 这里我们画一个四边形 glVertex2i(200, 130); glVertex2i(350, 230); glVertex2i(350, 130); glEnd(); glFlush(); // send all output to display 把数据从缓冲区弄到屏幕上 } //<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>> void main(int argc, char** argv) { glutInit(&argc, argv); // ***对GLUT进行初始化 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); // ***set display mode,单缓冲/双缓冲,颜色索引模式,深度等 glutInitWindowSize(640,480); // ***设置窗口大小 glutInitWindowPosition(0, 150); // ***设置窗口位置 glutCreateWindow("my first attempt"); // ***创建窗口 glutDisplayFunc(myDisplay); // 显示事件回调函数 myInit(); glutMainLoop(); // ***启动程序,检测事件并进行处理 }
目前我是根据以下2本书进行学习:
计算机图形学——用OpenGL实现 2nd edition
OpenGL编程指南 原书第6版