先贴一个OpenGL程序的代码,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <stdlib.h> #include <time.h> #include <windows.h> #include <gl/gl.h> #include <gl/glu.h> #include <gl/glut.h> #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
const int WINDOW_WIDTH = 640; const int WINDOW_HEIGHT = 480; const int WINDOW_POS_X = 300; const int WINDOW_POS_Y = 150; const int NUM = 1000;
void myInit() { 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, WINDOW_WIDTH, 0.0, WINDOW_HEIGHT); }
void myDisplay() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); for (int i = 0; i < NUM; ++i) { glVertex2i(rand() % WINDOW_WIDTH, rand() % WINDOW_HEIGHT); } glEnd(); glFlush(); }
int main(int argc, char** argv) { glutInit(argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); glutInitWindowPosition(WINDOW_POS_X, WINDOW_POS_Y); glutCreateWindow("散乱点图"); glutDisplayFunc(myDisplay); myInit(); srand(time(NULL)); glutMainLoop();
return 0; }
|
该程序只是创建一个窗口,然后在里面画一些随机的点。效果如图所示,
说实话这个程序非常简单,在主函数里面只是设置了窗口大小和位置,然后创建了个窗口,做了些初始化,并且为窗口设置了显示回调函数。初始化函数里面都有注释,显示回调函数里面只是一直在随机画点而已。
说实话,仅仅是使用最基本的opengl画图确实太简单了,也没什么多说的,如果你熟悉Windows程序设计和C++语言,只是换个库而已,真正需要学习的是计算机图形学。我觉得OpenGL相对于DirectX简洁明了很多了,所以才选择了计算机图形学OpenGL版这本书来学习图形学的。下面来简要介绍下OpenGL的库组成吧。
OpenGL库分为四个部分,GL和GLU,GLUT以及GLUI。GL和GLU都是用于绘图的,只是第一个是基本库,第二个是一些高级的绘图函数。GLUT库主要包含一些管理窗口和菜单的函数,GLUI则是一些高级的界面管理部分,比如各种复杂的按钮和菜单。
我觉得如果在VC下面建立控制台工程,然后设置链接命令去掉控制台窗口,再在main函数下执行OpenGL操作,这个过程不仅简洁而且感觉效果也不错。现在看来,OpenGL确实是一个比较美观的东西,至少相对于我用了几年的MFC来说。