一.相关的库
.OpenGL Library(核心库)
(1)包括115个函数,前缀:"gl"
(2) 例如:glColor3f(),glTranslate3f()
(3) gl.h,openGL32.lib,openGL32.dll
这些函数有三个文件和它们相关
gl.h放这些函数的声明,然后这些函数的真正实现在哪儿,一般来说在OpenGL32.dll动态链接库实现
OpenGL32.lib静态链接库或者用来实现,或者和dll配合来实现链接
拓展:
(1)Lib 和 dll 两种库:
一种是Lib包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。
一种是Lib包含了函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library.
共有两种链接方式:
动态链接使用动态链接库,允许可执行模块(.dll文件或 .exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。
静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数u,并将库同代码一起放到可执行文件中。
关于lib和dll的区别如下:
a,lib是编译时用到的,dll是运行时用到的。如果要完成源代码的编译,只需要lib;如果使用动态链接运行起来,只需要dll。
b.如果有dll文件,那么lib一般是一些索引信息,记录了dll中函数的入口和位置,dll中是函数的具体内容;如果只有lib文件,那么这个lib文件是静态编译哦出来的,索引和实现都在其中。使用静态编译的lib文件,在运行程序时不需要再挂动态库,缺点是导致应用程序比较大,而失去了动态库的灵活性,发布新版本时要发布新的应用程序才行。
c.动态链接的情况下,有两个文件:一个是Lib文件,一个是DLL文件。Lib包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用Lib文件链接到DLL文件。在应用程序的可执行文件中个,存放的不是被调用的函数代码,而是DLL中相应函数代码的地址,从而节省了内存资源。DLL和LIB文件必须随应用程序一起发行,否则应用程序会产生错误。如果不想用lib文件或者没有lib文件,可以用WIN32API函数LoadLibrary、GetProcAddress装载。
(2)如何理解OpenGL的跨平台性?
OpenGL和DX相比有一个很大的特点就是跨平台的特性。换句话说,它是不依赖硬件的接口,可以运行在各种不同类型的图形硬件系统上,甚至完全是一个软件(而没有图形硬件)。
.OpenGL utility library(实用程序库)
(1)包括43个函数,前缀:”glu"
(2)gluPerspective()
(3)glu.h,glu.lib,glu.dll
跨平台性:OpenGL的核心库和实用库接口可以在任何OpenGL的实现平台上使用,如MS windows ,Unix,Linux,IOS...
但,只有核心库和实用程序库是不行的!
二.只有核心库和实用程序库是不行的!
.辅助OpenGL编程的工具库
(1)如freeglut (free OpenGL Utility Toolkit)
(2) 需要glut.h,freeglut.h,freeglut32.lib,freeglut32.dll
.freeglut功能
(1)执行与窗口相关的功能
(2) 鼠标、键盘交互功能
(3)右键菜单功能
(4)高层的建模命令(如glutSolidSphere(1.0))
三.有时还会见到窗口接口库
Window interface library
(1)前缀:"wgl",”glx","pgl",Agl...
(2)wglCreateContext(m_hDC)
窗口界面库是与平台相关的
Related Library
(1)在微软操作系统中的相关文件
四.C\C++编程的基本流程
拓展链接:
http://www.cppblog.com/amazon/archive/2009/09/04/95318.html
https://blog.csdn.net/u012662731/article/details/78520349
https://www.cnblogs.com/mickole/articles/3659112.html