freeglut是GLUT[注1]的一个完全开源替代库。事件处理函式
glutMainLoop
glutMainLoopEvent
glutLeaveMainLoop //这是freeglut里的循环函式,可代替glutMainLoop函式,可解决记忆体泄露问题。
基本介绍
- 中文名:freeGLUT
- 解释:是GLUT的一个完全开源替代库
- 特点:简单、跨平台
- 来自:《OpenGL红皮书(第二版)》
freeglut
介绍
GLUT最初是《OpenGL红皮书(第二版)》[注2]中的示例程式。自那以后,GLUT简单、跨平台的特点,使其在各种实际套用中广泛套用。
GLUT(以及freeglut)允许用户在众多的平台的创建和管理视窗中OpenGL容器,以及相关的滑鼠、键盘和游戏桿功能。
freeglut 由X-联盟许可下发布的。
[注1] GLUT :OpenGL实用工具包
[注2] 《OpenGL红皮书(第二版)》,由Mark Kilgard开发
创建原因
目前最后版本GLUT v3.7的历史可追溯至1998年8月,且该项目似乎已经被废弃。它的许可证禁止任何人发布修改后的库代码。
毋庸置疑GLUT已经很老了,真的需要改善。此外,GLUT的许可证与一些软体发行不兼容(如XFree86的)。
创作者
freeglut最初由帕维尔·W. Olszta与安德烈亚斯·乌姆巴赫和史蒂夫·贝克的贡献。史蒂夫是现在官方的拥有者/维护者。
创建时间
帕维尔在1999年12月1日开始freeglut的开发。目前,该项目几乎可以100%的替代原来的GLUT,只有少数差别(如,the abandonment of SGI-specific features,按钮盒子和动态视频解析度)和 其他一小部分程式Bug。
有一些扩展功能,如应用程式中可使用更多的预定义形状。
发布版本
没有目前的测试版本。
稳定的版本
Freeglut3.0.0发布于2015年3月7日
Freeglut2.8.1 发布于2013年4月5日
Freeglut 2.8.0发布于2012年1月2日
Freeglut 2.6.0发布于2009年11月27日
Freeglut 2.4.0发布于2005年6月9日
Freeglut 2.2.0发布于2003年12月12日
Freeglut 2.0.1发布于2003年10月23日
freeglut函式
初始化函式
glutInit
glutInitWindowPosition,
glutInitWindowSize
glutInitDisplayMode
glutInitDisplayString
事件处理函式
glutMainLoop
glutMainLoopEvent
glutLeaveMainLoop //这是freeglut里的循环函式,可代替glutMainLoop函式,可解决记忆体泄露问题
视窗功能
glutCreateWindow
glutCreateSubwindow
glutDestroyWindow
glutSetWindow,glutGetWindow
glutSetWindowTitle,glutSetIconTitlew
glutReshapeWindow
glutPositionWindow
glutShowWindow,glutHideWindow,glutIconifyWindow
glutPushWindow,glutPopWindow
glutFullScreen的,glutLeaveFullScreen的,glutFullScreenToggle
显示功能
glutPostRedisplay
glutPostWindowRedisplay
glutSwapBuffers
滑鼠游标功能
glutSetCursor
glutWarpPointer
叠加功能
glutEstablishOverlay
glutRemoveOverlay
glutUseLayer
glutPostOverlayRedisplay
glutPostWindowOverlayRedisplay
glutShowOverlay,glutHideOverlay
选单功能
glutCreateMenu
glutDestroyMenu
glutGetMenu,glutSetMenu
glutAddMenuEntry
glutAddSubMenu
glutChangeToMenuEntry
glutChangeToSubMenu
glutRemoveMenuItem
glutAttachMenu,glutDetachMenu
全局回调函式注册功能
glutTimerFunc
glutIdleFunc
视窗的回调函式注册功能
glutDisplayFunc
glutOverlayDisplayFunc
glutReshapeFunc
glutKeyboardFunc
glutSpecialFunc
glutKeyboardUpFunc
glutSpecialUpFunc
glutMotionFunc,glutPassiveMotionFunc
glutVisibilityFunc
glutEntryFunc
glutJoystickFunc
glutSpaceballMotionFunc
glutSpaceballRotateFunc
glutSpaceballButtonFunc
glutButtonBoxFunc
glutDialsFunc
glutTabletMotionFunc
glutTabletButtonFunc
glutMenuStatusFunc
glutWindowStatusFunc
状态设定和检索功能
glutSetOption
glutGet
glutDeviceGet
glutGetModifiers
glutLayerGet
glutExtensionSupported
glutGetProcAddress
字型渲染功能
glutBitmapCharacter
glutBitmapString
glutBitmapWidth
glutBitmapLength
glutBitmapHeight
glutStrokeCharacter
glutStrokeString
glutStrokeWidth
glutStrokeLength
glutStrokeHeight
几何对象的渲染功能
glutWireSphere,glutSolidSphere
glutWireTorus,glutSolidTorus
glutWireCone,glutSolidCone
glutWireCube,glutSolidCube
glutWireTetrahedron,glutSolidTetrahedron
glutWireOctahedron,glutSolidOctahedron
glutWireDodecahedron,glutSolidDodecahedron
glutWireIcosahedron,glutSolidIcosahedron
glutWireRhombicDodecahedron,glutSolidRhombicDodecahedron
glutWireTeapot,glutSolidTeapot
游戏模式功能
glutGameModeString
glutEnterGameMode,glutLeaveGameMode
glutGameModeGet
视频调整大小功能
glutVideoResizeGet
glutSetupVideoResizing,glutStopVideoResizing
glutVideoResize
glutVideoPan
彩色空间功能
glutSetColor,glutGetColor
glutCopyColormap
多点触控功能
glutMultiEntryFunc←id, GLUT_ENTERED|GLUT_LEFT
glutMultiButtonFunc←id, x, y, button, GLUT_DOWN|GLUT_UP
glutMultiMotionFunc←id, x, y
glutMultiPassiveFunc←id, x, y
Android的功能
glutInitContextFunc←void
glutPauseFunc←void
glutResumeFunc←void
其他功能
glutIgnoreKeyRepeat,glutSetKeyRepeat
glutForceJoystickFunc
glutReportErrors
如果想要了解各个函式的用法,可以访问扩展阅读的网站
freeglut的安装
一、下载freeglut
freeglut的最新版本(截止至2014年3月14日)是2.8.1(Released: 5 April 2013)
可以从官方获得其最新版本的下载。
可以从官方获得其最新版本的下载。
二、编译freeglut
freeglut提供了对windows平台良好的编译支持,在freeglut-2.8.1\VisualStudio目录下可以找到2008~2012版本的VS工程档案(经测试,VS2013也完全可以使用VS2012的工程档案)。
2.1. 打开对应版本的工程档案,选择对应的配置版本,建议Realese版本(Debug版本也可)。
2.2. 生成–>生成解决方案
2.3. 生成档案在\freeglut-2.8.1\lib\x86目录,有freeglut.lib, freeglut.dll.
2.1. 打开对应版本的工程档案,选择对应的配置版本,建议Realese版本(Debug版本也可)。
2.2. 生成–>生成解决方案
2.3. 生成档案在\freeglut-2.8.1\lib\x86目录,有freeglut.lib, freeglut.dll.
三、安装freeglut
3.1. Header档案安装:
将\freeglut-2.8.1\include\GL 目录複製到 Microsoft Visual Studio 12.0\VC\include目录下。
3.2. 库档案安装
将freeglut.lib档案複製到Microsoft Visual Studio 12.0\VC\lib目录下。
将freeglut.dll档案複製到C:\Windows\SysWOW64 【32位系统为 “C:\Windows\System32”】目录下。
将\freeglut-2.8.1\include\GL 目录複製到 Microsoft Visual Studio 12.0\VC\include目录下。
3.2. 库档案安装
将freeglut.lib档案複製到Microsoft Visual Studio 12.0\VC\lib目录下。
将freeglut.dll档案複製到C:\Windows\SysWOW64 【32位系统为 “C:\Windows\System32”】目录下。
四、使用freeglut
直接包含<gl/freeglut.h>档案即可。
五、DEBUG,RELEASE 模式选择
分两步:
1.VS2008里 工具-选项-项目和解决方案-常规 里 将 显示高级生成配置前打钩
2.工具 -自定义-"命令”选项卡-从左边类别里面找到“生成”-选中“生成”后,在右面选择“解决方案配置”,拖拽到你想要的位置上。
3.然后就可以方便的选择模式了。