最近需要做一个基于Zigbee室内无线定位的系统,受到TI公司ZigBee Sensor Monitor软件的启发,打算用OpenGL来做一个3D显示空间内物体位置的程序。学习阶段选择VS2010+OpenGL,而主机确定是用raspberry pi,到时候需要移植到ES版本。
选择OpenGL看中的就是移植性强,至于其效果和D3D孰强孰弱也很难比较。一则恐怕目前没有使用D3D的机会;二则3D计算机图像渲染效果除了软件还需要硬件支持。
废话不多说,从官网下了OpenGL的一个库GLUT,一共就5个文件。dll后缀放system32/syswow64文件里,lib后缀放vs2010-sdks-lib文件里,h头文件放include文件。
这里说明一下,dll文件是片段可执行的文件,动态调用时候被函数调用。虽然lib是链接库文件,不过lib文件和dll文件作用相似,一般在制作lib文件时,在lib文件里存放的是相应的dll的一些函数入口。因此在编译器编译的时候包括了编译lib文件的过程,而dll无需要编译。另一种方式也可以只有lib文件加相应头文件,即一些通用函数的实现直接编入lib文件。
GLUT库只是OpenGL的冰山一角,GLUT不代表OpenGL当前最新的版本,其亮点就是在学习过程中大大简化了窗口操作,帮助我们把重心放在“渲染”3D图像上面。如果熟悉mfc编程或者qt编程的就会知道,mfc和qt有自己的一套和os打交道的消息机制,头文件就只需要gl.h和glu.h就能好使。另外,OpenGL的相关扩展很丰富,而且在windows系统里面其OpenGL内核版本封顶到了1.5,因此以后遇到找不到的函数需要加别的库,方法就是上面所讲。sourceforge上有当前版本的更新。
最后,推荐一个GL教程,讲得不是很深,但是能让初学者整体地感受一下OpenGL的魅力。“Zeus CMD - Design and Development Tutorials”