您好,登錄后才能下訂單哦!
OpenGL 函數(shù)庫相關(guān)的API有核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具庫(glut)、窗口庫(glx、agl、wgl)和擴展函數(shù)庫等.gl是核心,glu是對gl的部分封裝。glx、agl、wgl 是針對不同窗口系統(tǒng)的函數(shù)。glut是為跨平臺的OpenGL程序的工具包,比aux功能強大。擴展函數(shù)庫是硬件廠商為實現(xiàn)硬件更新利用OpenGL的擴展機制開發(fā)的函數(shù)。
1.OpenGL核心庫
核心庫包含有115個函數(shù),函數(shù)名的前綴為gl。
這部分函數(shù)用于常規(guī)的、核心的圖形處理。此函數(shù)由gl.dll來負(fù)責(zé)解釋執(zhí)行。由于許多函數(shù)可以接收不同數(shù)以下幾類。據(jù)類型的參數(shù),因此派生出來的函數(shù)原形多達300多個。
核心庫中的函數(shù)主要可以分為以下幾類函數(shù):
(1)繪制基本幾何圖元的函數(shù)。如繪制圖元的函數(shù)glBegain()、glEnd()、glNormal*()、glVertex*()。
(2)矩陣操作、幾何變換和投影變換的函數(shù)。如矩陣入棧函數(shù)glPushMatrix()、矩陣出棧函數(shù)glPopMatrix()、裝載矩陣函數(shù)glLoadMatrix()、矩陣相乘函數(shù)glMultMatrix(),當(dāng)前矩陣函數(shù) glMatrixMode()和矩陣標(biāo)準(zhǔn)化函數(shù)glLoadIdentity(),幾何變換函數(shù)glTranslate*()、glRotate*()和 glScale*(),投影變換函數(shù)glOrtho()、glFrustum()和視口變換函數(shù)glViewport()等等。
(3)顏色、光照和材質(zhì)的函數(shù)。如設(shè)置顏色模式函數(shù)glColor*()、glIndex*(),設(shè)置光照效果的函數(shù)glLight*() 、glLightModel*()和設(shè)置材質(zhì)效果函數(shù)glMaterial()等等。
(4)顯示列表函數(shù)、主要有創(chuàng)建、結(jié)束、生成、刪除和調(diào)用顯示列表的函數(shù)glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists()。
(5)紋理映射函數(shù),主要有一維紋理函數(shù)glTexImage1D()、二維紋理函數(shù)glTexImage2D()、 設(shè)置紋理參數(shù)、紋理環(huán)境和紋理坐標(biāo)的函數(shù)glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函數(shù)。融合函數(shù)glBlendFunc()、反走樣函數(shù)glHint()和霧化效果glFog*()。
(7)光柵化、象素操作函數(shù)。如象素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪制模式glPolygonMode(),讀取象素glReadPixel()、復(fù)制象素glCopyPixel()等。
(8)選擇與反饋函數(shù)。主要有渲染模式glRenderMode()、選擇緩沖區(qū)glSelectBuffer()和反饋緩沖區(qū)glFeedbackBuffer()等。
(9)曲線與曲面的繪制函數(shù)。生成曲線或曲面的函數(shù)glMap*()、glMapGrid*(),求值器的函數(shù)glEvalCoord*() glEvalMesh*()。
(10)狀態(tài)設(shè)置與查詢函數(shù)。主要有g(shù)lGet*()、glEnable()、glGetError()等。
2.OpenGL實用庫The OpenGL Utility Library (GLU)
包含有43個函數(shù),函數(shù)名的前綴為glu。
OpenGL提供了強大的但是為數(shù)不多的繪圖命令,所有較復(fù)雜的繪圖都必須從點。線、面開始。Glu 為了減輕繁重的編程工作,封裝了OpenGL函數(shù),Glu函數(shù)通過調(diào)用核心庫的函數(shù),為開發(fā)者提供相對簡單的用法,實現(xiàn)一些較為復(fù)雜的操作。此函數(shù)由 glu.dll來負(fù)責(zé)解釋執(zhí)行。OpenGL中的核心庫和實用庫可以在所有的OpenGL平臺上運行。
(1)輔助紋理貼圖函數(shù),有g(shù)luScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()。
(2)坐標(biāo)轉(zhuǎn)換和投影變換函數(shù),定義投影方式函數(shù)gluPerspective()、gluOrtho2D() 、gluLookAt(),拾取投影視景體函數(shù)gluPickMatrix(),投影矩陣計算gluProject()和 gluUnProject()等等。
(3)多邊形鑲嵌工具,有g(shù)luNewTess()、 gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()等等。
(4)二次曲面繪制工具,主要有繪制球面、錐面、柱面、圓環(huán)面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()等等 (5)非均勻有理B樣條繪制工具,主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、 gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、 gluNurbsProperty()等函數(shù)。
(6)錯誤反饋工具,獲取出錯信息的字符串gluErrorString()。
3.OpenGL輔助庫
包含有31個函數(shù),函數(shù)名前綴為aux。
這部分函數(shù)提供窗口管理、輸入輸出處理以及繪制一些簡單三維物體。此函數(shù)由glaux.dll來負(fù)責(zé)解釋執(zhí)行。創(chuàng)建aux庫是為了學(xué)習(xí)和編寫 OpenGL程序,它更像是一個用于測試創(chuàng)意的預(yù)備基礎(chǔ)接管。Aux庫在windows實現(xiàn)有很多錯誤,因此很容易導(dǎo)致頻繁的崩潰。在跨平臺的編程實例和演示中,aux很大程度上已經(jīng)被glut庫取代。OpenGL中的輔助庫不能在所有的OpenGL平臺上運行。
輔助庫函數(shù)主要包括以下幾類:
(1)窗口初始化和退出函數(shù),auxInitDisplayMode()和auxInitPosition()。
(2)窗口處理和時間輸入函數(shù),auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。
(3)顏色索引裝入函數(shù),auxSetOneColor()。
(4)三維物體繪制函數(shù)。包括了兩種形式網(wǎng)狀體和實心體,如繪制立方體auxWireCube()和 auxSolidCube()。這里以網(wǎng)狀體為例,長方體auxWireBox()、環(huán)形圓紋面auxWireTorus()、圓柱 auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體 auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺 auxWireTeapot()。
(5)背景過程管理函數(shù)auxIdleFunc()。
(6)程序運行函數(shù)auxMainLoop()。
4.OpenGL工具庫 OpenGL Utility Toolkit
包含大約30多個函數(shù),函數(shù)名前綴為glut。
glut是不依賴于窗口平臺的OpenGL工具包,由Mark KLilgrad在SGI編寫(現(xiàn)在在Nvidia),目的是隱藏不同窗口平臺API的復(fù)雜度。函數(shù)以glut開頭,它們作為aux庫功能更強的替代品,提供更為復(fù)雜的繪制功能,此函數(shù)由glut.dll來負(fù)責(zé)解釋執(zhí)行。由于glut中的窗口管理函數(shù)是不依賴于運行環(huán)境的,因此OpenGL中的工具庫可以在X-Window, Windows NT, OS/2等系統(tǒng)下運行,特別適合于開發(fā)不需要復(fù)雜界面的OpenGL示例程序。對于有經(jīng)驗的程序員來說,一般先用glut理順3D圖形代碼,然后再集成為完整的應(yīng)用程序。
這部分函數(shù)主要包括:
(1)窗口操作函數(shù),窗口初始化、窗口大小、窗口位置等函數(shù)glutInit() glutInitDisplayMode() glutInitWindowSize() glutInitWindowPosition()等。
(2)回調(diào)函數(shù)。響應(yīng)刷新消息、鍵盤消息、鼠標(biāo)消息、定時器函數(shù)等,GlutDisplayFunc() glutPostRedisplay() glutReshapeFunc() glutTimerFunc() glutKeyboardFunc() glutMouseFunc()。
(3)創(chuàng)建復(fù)雜的三維物體。這些和aux庫的函數(shù)功能相同。創(chuàng)建網(wǎng)狀體和實心體。如glutSolidSphere()、glutWireSphere()等。在此不再敘述。
(4)菜單函數(shù)。創(chuàng)建添加菜單的函數(shù)GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu() 和glutAttachMenu()。
(5)程序運行函數(shù),glutMainLoop()。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。