OpenGL第一话 OpenGL环境搭建 补充

来源:互联网 发布:淘宝助理教程视频 编辑:程序博客网 时间:2024/06/05 04:22

问题1:glut是什么,freeglut又是什么,为什么有的用glut,有的用freeglut?

    glut全称是OpenGL Utility Toolkit,是OpenGL的应用工具包。GLUT的两个主要目的是建立一个跨平台的函式库(事实上GLUT就是跨平台的),以及简化学习OpenGL的条件。透过GLUT编写OpenGL通常只需要增加几行额外GLUT的程式码,而且不需要知道每个不同操作系统处理视窗的API

    OpenGL红宝书里就是用glut来搭建环境的。那我又为什么用freeglut呢,freeglut是什么呢

目前最后版本GLUT v3.7的历史可追溯至19988月,且该项目似乎已经被废弃。它的许可证禁止任何人发布修改后的库代码。

毋庸置疑GLUT已经很老了,真的需要改善。

     freeglut就是glut的完全开源替代库,目前,该项目几乎可以100%的替代原来的GLUT,只有少数差别。所以说用freeglutglut都可以。

 

问题2:glew又是什么?

在网上查找OpenGL的环境搭建,会发现有的有glew,有的没有,这是怎么回事呢。

glew全称是OpenGL Extension Wrangler OpenGL的扩展库。当开发者需要使用最新的OpenGL扩展时,他们往往需要使用GLEW库或者是GLEE库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。这类库利用动态加载技术(dlsymGetProcAddress等函数)搜索各种扩展的信息。微软推广自己Direct3D后,就开始压制OpenGL,所以现在就是靠各个硬件厂家的驱动来支持OpenGL,所以会需要glew库。

 

问题3:环境搭建好了,但是从头至尾都没见OpenGL,它在哪儿呢?

基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLLGlu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里假定用户将Windows NT安装在C盘上)64位系统的在C:\Windows\SysWOW64目录下也会发现这两个dll文件的。

 

问题4:OpenGL库里有什么,和glut,glew有什么关系?

目前OpenGL中的函数主要包含在3个库中,gl库,glu库,glut库。

gl库是核心库,glu是实用库,glut是实用工具库。

gl是核心,glu是对gl的部分封装,glutOpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎是对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。

glut是基本的窗口界面,是独立于glglu的,如果不喜欢用glut可以用MFCWin32窗口等代替,但是glut是跨平台的,这就保证了我们编出的程序是跨平台的,如果用MFC或者Win32只能在windows操作系统上使用。选择OpenGL的一个很大原因就是因为它的跨平台性,所以我们可以尽量的使用glut库。

OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glxaglwgl)和扩展函数库(比如glewglee)等。

gl是核心,glu是对gl的部分封装。glxaglwgl是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

参考链接:点击打开链接

 

问题5:glut,glew环境搭建过程中,为什么没有配置vs2012就好使了呢?

刚开始在网上查找OpenGL环境搭建的时候,都是让把头文件,静态库文件,动态库文件拷贝到vs的相应目录下,然后在配置vs项目属性,添加库目录,附加依赖性神马之类的,我有这种方式做了,找不到OpenGL文件,找不到glut文件,解决了一个问题又一个的。。没成功,直到后来用了上篇这种方法才OK的。点击打开链接

在拷贝的时候,我就在想这个路径\Windows Kits\8.0\,这个目录下什么呢,在网上查找发现这么目录下其实是Windows8 SDK

Windows sdk是什么呢?

微软每推出一个重要的windows版本,一般都会同时推出一个SDKSoftware Development Kit)。SDK包含了开发该windows版本所需的windows函数和常数定义、API函数说明文档、相关工具和示例。SDK一般使用C语言,但不包括编译器。高版本VC++包括了SDK所有的头文件、帮助、示例和工具,不需要再安装SDK

参考链接:点击打开链接

vs2012中打开一个vc++项目,查看项目属性,会发现包含目录,库目录中都已经包含了windows SDK下的东西了。所以,我们将freeglutglew的头文件头文件,静态库文件,动态库文件拷贝到windows SDKsystem32下就OK了,也不需要你再vs里配置什么了。当然,以上是我自己的推测,不对的希望指出。

0 0