freeglut是GLUT[注1]的一個完全開源替代庫。事件處理函式
glutMainLoop
glutMainLoopEvent
glutLeaveMainLoop //這是freeglut里的循環函式,可代替glutMainLoop函式,可解決記憶體泄露問題。
基本介紹
- 中文名:freeGLUT
- 解釋:是GLUT的一個完全開源替代庫
- 特點:簡單、跨平台
- 來自:《OpenGL紅皮書(第二版)》
freeglut,介紹,創建原因,創作者,創建時間,發布版本,freeglut函式,初始化函式,事件處理函式,視窗功能,顯示功能,滑鼠游標功能,疊加功能,選單功能,全局回調函式註冊功能,視窗的回調函式註冊功能,狀態設定和檢索功能,字型渲染功能,幾何對象的渲染功能,遊戲模式功能,視頻調整大小功能,彩色空間功能,多點觸控功能,Android的功能,其他功能,freeglut的安裝,一、下載freeglut,二、編譯freeglut,三、安裝freeglut,四、使用freeglut,五、DEBUG,RELEASE 模式選擇,
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.然後就可以方便的選擇模式了。