複製鏈接
請複製以下鏈接發送給好友

freeGLUT

鎖定
freeglut 是 GLUT (OpenGL Utility Toolkit)的一個免費開源替代庫。在程序中負責創建窗口、初始化 OpenGL 上下文和處理輸入事件所需的所有系統特定的雜務,從而允許創建真正可移植的 OpenGL 程序。
中文名
freeGLUT
解    釋
GLUT的完全開源替代庫
特    點
簡單、跨平台
來    自
《OpenGL紅皮書(第二版)》

freeGLUTfreeglut

freeGLUT基本介紹

GLUT 最初是《OpenGL紅皮書(第二版)》(Mark Kilgard著)中的示例程序。自那以後,GLUT簡單、跨平台的特點,使其在各種實際應用中廣泛應用。
GLUT(以及freeglut)允許用户在眾多的平台的創建和管理窗口中OpenGL容器,以及相關的鼠標、鍵盤和遊戲杆功能。最後版本GLUT v3.7的歷史可追溯至1998年8月,且該項目似乎已經被廢棄。它的許可證禁止任何人發佈修改後的庫代碼。毋庸置疑GLUT已經很老了,真的需要改善。此外,GLUT的許可證與一些軟件發行不兼容(如XFree86的)。
freeglut 最初由帕維爾·W. Olszta與安德烈亞斯·烏姆巴赫和史蒂夫·貝克的貢獻。史蒂夫是官方的擁有者/維護者。帕維爾在1999年12月1日開始 freeglut 的開發。freeglut 幾乎可以100%的替代原來的GLUT,只有少數差別(如,the abandonment of SGI-specific features,按鈕盒子和動態視頻分辨率)和 其他一小部分程序Bug。 [1] 
freeglut 由X-聯盟許可下發布的。
有一些擴展功能,如應用程序中可使用更多的預定義形狀。

freeGLUT發佈版本

穩定的版本:
  • freeglut 3.2.2 發佈於2022年2月6日
  • freeglut 3.2.1 發佈於2019年9月29日
  • freeglut 3.2.0 發佈於2019年9月16日
  • freeglut 3.0.0發佈於2015年3月7日
  • freeglut 2.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日

freeGLUTfreeglut 函數

freeglut 包含以下幾大類函數: [2] 

freeGLUT初始化函數

glutInit
glutInitWindowPosition,
glutInitWindowSize
glutInitDisplayMode
glutInitDisplayString

freeGLUT事件處理函數

glutMainLoop
glutMainLoopEvent
glutLeaveMainLoop //這是freeglut裏的循環函數,可代替glutMainLoop函數,可解決內存泄露問題

freeGLUT窗口功能

glutCreateWindow
glutCreateSubwindow
glutDestroyWindow
glutSetWindow,glutGetWindow
glutSetWindowTitle,glutSetIconTitlew
glutReshapeWindow
glutPositionWindow
glutShowWindow,glutHideWindow,glutIconifyWindow
glutPushWindow,glutPopWindow
glutFullScreen的,glutLeaveFullScreen的,glutFullScreenToggle

freeGLUT顯示功能

glutPostRedisplay
glutPostWindowRedisplay
glutSwapBuffers

freeGLUT鼠標光標功能

glutSetCursor
glutWarpPointer

freeGLUT疊加功能

glutEstablishOverlay
glutRemoveOverlay
glutUseLayer
glutPostOverlayRedisplay
glutPostWindowOverlayRedisplay
glutShowOverlay,glutHideOverlay

freeGLUT菜單功能

glutCreateMenu
glutDestroyMenu
glutGetMenu,glutSetMenu
glutAddMenuEntry
glutAddSubMenu
glutChangeToMenuEntry
glutChangeToSubMenu
glutRemoveMenuItem
glutAttachMenu,glutDetachMenu

freeGLUT全局回調函數註冊功能

glutTimerFunc
glutIdleFunc

freeGLUT窗口的回調函數註冊功能

glutDisplayFunc
glutOverlayDisplayFunc
glutReshapeFunc
glutKeyboardFunc
glutSpecialFunc
glutKeyboardUpFunc
glutSpecialUpFunc
glutMotionFunc,glutPassiveMotionFunc
glutVisibilityFunc
glutEntryFunc
glutJoystickFunc
glutSpaceballMotionFunc
glutSpaceballRotateFunc
glutSpaceballButtonFunc
glutButtonBoxFunc
glutDialsFunc
glutTabletMotionFunc
glutTabletButtonFunc
glutMenuStatusFunc
glutWindowStatusFunc

freeGLUT狀態設置和檢索功能

glutSetOption
glutGet
glutDeviceGet
glutGetModifiers
glutLayerGet
glutExtensionSupported
glutGetProcAddress

freeGLUT字體渲染功能

glutBitmapCharacter
glutBitmapString
glutBitmapWidth
glutBitmapLength
glutBitmapHeight
glutStrokeCharacter
glutStrokeString
glutStrokeWidth
glutStrokeLength
glutStrokeHeight

freeGLUT幾何對象的渲染功能

glutWireSphere,glutSolidSphere
glutWireTorus,glutSolidTorus
glutWireCone,glutSolidCone
glutWireCube,glutSolidCube
glutWireTetrahedron,glutSolidTetrahedron
glutWireOctahedron,glutSolidOctahedron
glutWireDodecahedron,glutSolidDodecahedron
glutWireIcosahedron,glutSolidIcosahedron
glutWireRhombicDodecahedron,glutSolidRhombicDodecahedron
glutWireTeapot,glutSolidTeapot

freeGLUT遊戲模式功能

glutGameModeString
glutEnterGameMode,glutLeaveGameMode
glutGameModeGet

freeGLUT視頻調整大小功能

glutVideoResizeGet
glutSetupVideoResizing,glutStopVideoResizing
glutVideoResize
glutVideoPan

freeGLUT彩色空間功能

glutSetColor,glutGetColor
glutCopyColormap

freeGLUT多點觸控功能

glutMultiEntryFunc←id, GLUT_ENTERED|GLUT_LEFT
glutMultiButtonFunc←id, x, y, button, GLUT_DOWN|GLUT_UP
glutMultiMotionFunc←id, x, y
glutMultiPassiveFunc←id, x, y

freeGLUTAndroid的功能

glutInitContextFunc←void
glutPauseFunc←void
glutResumeFunc←void

freeGLUT其他功能

glutIgnoreKeyRepeat,glutSetKeyRepeat
glutForceJoystickFunc
glutReportErrors
如果想要了解各個函數的用法,可以訪問擴展閲讀的網站

freeGLUTfreeglut的安裝和使用

一、下載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.
三、安裝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
直接包含<gl/freeglut.h>文件即可。
五、DEBUG 與 RELEASE 模式選擇
分兩步:
1.VS2008裏 工具-選項-項目和解決方案-常規 裏 將 顯示高級生成配置前打鈎
2.工具 -自定義-“命令”選項卡-從左邊類別裏面找到“生成”-選中“生成”後,在右面選擇“解決方案配置”,拖拽到你想要的位置上。
3.然後就可以方便的選擇模式了。
參考資料