OpenGL API 簡介

OpenGL API 簡介


開發基於OpenGL的應用程序,必須先了解OpenGL的庫函數。它採用C語言風格,提供大量的函數來進行圖形的處理和顯示。OpenGL庫函數的命名方式非常有規律。所有OpenGL函數採用了以下格式:

<庫前綴><根命令><可選的參數個數><可選的參數類型>

  庫前綴有glgluauxglutwglglxagl等等,分別表示該函數屬於OpenGL那個開發庫,從函數名後面中還可以看出需要多少個參數以及參數的類型。I代表int型,f代表float型,d代表double型,u代表無符號整型。例如glVertex3fv()表示了該函數屬於gl庫,參數是三個float型參數指針。我們用glVertex*()

來表示這一類函數。

  OpenGL函數庫相關的API有核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具庫(glut)、窗口庫(glxaglwgl)和擴展函數庫等。從圖可以看出,gl是核心,glu是對gl的部分封裝。glxaglwgl 是針對不同窗口系統的函數。glut是爲跨平臺的OpenGL程序的工具包,比aux功能強大。擴展函數庫是硬件廠商爲實現硬件更新利用OpenGL的擴展機制開發的函數。下面逐一對這些庫進行詳細介紹。

1OpenGL核心庫

  核心庫包含有115個函數,函數名的前綴爲gl。這部分函數用於常規的、核心的圖形處理。此函數由gl.dll來負責解釋執行。由於許多函數可以接收不同數以下幾類。據類型的參數,因此派生出來的函數原形多達300多個。核心庫中的函數主要可以分爲以下幾類函數:

·                                 繪製基本幾何圖元的函數:glBegain()glEnd()glNormal*()glVertex*()

·                                 矩陣操作、幾何變換和投影變換的函數:如矩陣入棧函數glPushMatrix(),矩陣出棧函數glPopMatrix(),裝載矩陣函數glLoadMatrix(),矩陣相乘函數glMultMatrix(),當前矩陣函數glMatrixMode()和矩陣標準化函數glLoadIdentity(),幾何變換函數glTranslate*()glRotate*()glScale*(),投影變換函數glOrtho()glFrustum()和視口變換函數glViewport()

·                                 顏色、光照和材質的函數:如設置顏色模式函數glColor*()glIndex*(),設置光照效果的函數glLight*() glLightModel*()和設置材質效果函數glMaterial()

·                                 顯示列表函數:主要有創建、結束、生成、刪除和調用顯示列表的函數glNewList()glEndList()glGenLists()glCallList()glDeleteLists()

·                                 紋理映射函數:主要有一維紋理函數glTexImage1D()、二維紋理函數glTexImage2D()、設置紋理參數、紋理環境和紋理座標的函數glTexParameter*()glTexEnv*()glTetCoord*()

·                                 特殊效果函數:融合函數glBlendFunc()、反走樣函數glHint()和霧化效果glFog*()

·                                 光柵化、象素操作函數:如象素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪製模式glPolygonMode(),讀取象素glReadPixel()、複製象素glCopyPixel()

·                                 選擇與反饋函數:主要有渲染模式glRenderMode()、選擇緩衝區glSelectBuffer()和反饋緩衝區glFeedbackBuffer()

·                                 曲線與曲面的繪製函數:生成曲線或曲面的函數glMap*()glMapGrid*(),求值器的函數glEvalCoord*() glEvalMesh*()

·                                 狀態設置與查詢函數:glGet*()glEnable()glGetError()

2OpenGL實用庫The OpenGL Utility Library (GLU)

  包含有43個函數,函數名的前綴爲gluOpenGL提供了強大的但是爲數不多的繪圖命令,所有較複雜的繪圖都必須從點、線、面開始。Glu 爲了減輕繁重的編程工作,封裝了OpenGL函數,Glu函數通過調用核心庫的函數,爲開發者提供相對簡單的用法,實現一些較爲複雜的操作。此函數由glu.dll來負責解釋執行。OpenGL中的核心庫和實用庫可以在所有的OpenGL平臺上運行。主要包括了以下幾種:

·                                 輔助紋理貼圖函數:gluScaleImage() gluBuild1Dmipmaps()gluBuild2Dmipmaps()

·                                 座標轉換和投影變換函數:定義投影方式函數gluPerspective()gluOrtho2D() gluLookAt(),拾取投影視景體函數gluPickMatrix(),投影矩陣計算gluProject()gluUnProject()

·                                 多邊形鑲嵌工具:gluNewTess()gluDeleteTess()gluTessCallback()gluBeginPolygon()gluTessVertex()gluNextContour()gluEndPolygon()

·                                 二次曲面繪製工具,主要有繪製球面、錐面、柱面、圓環面gluNewQuadric()gluSphere()gluCylinder()gluDisk()gluPartialDisk()gluDeleteQuadric()

·                                 非均勻有理B樣條繪製工具:主要用來定義和繪製Nurbs曲線和曲面,包括gluNewNurbsRenderer()gluNurbsCurve()gluBeginSurface()gluEndSurface()gluBeginCurve()gluNurbsProperty()

·                                 錯誤反饋工具:獲取出錯信息的字符串gluErrorString()

3OpenGL輔助庫

  包含有31個函數,函數名前綴爲aux。這部分函數提供窗口管理、輸入輸出處理以及繪製一些簡單三維物體。此函數由glaux.dll來負責解釋執行。創建aux庫是爲了學習和編寫OpenGL程序,它更像是一個用於測試創意的預備基礎接管。Aux庫在windows實現有很多錯誤,因此很容易導致頻繁的崩潰。在跨平臺的編程實例和演示中,aux很大程度上已經被glut庫取代。OpenGL中的輔助庫不能在所有的OpenGL平臺上運行。

  輔助庫函數主要包括以下幾類:

·                                 窗口初始化和退出函數:auxInitDisplayMode()auxInitPosition()

·                                 窗口處理和時間輸入函數:auxReshapeFunc()auxKeyFunc()auxMouseFunc()

·                                 顏色索引裝入函數:auxSetOneColor()

·                                 三維物體繪製函數:包括了兩種形式網狀體和實心體,如繪製立方體auxWireCube() auxSolidCube()。這裏以網狀體爲例,長方體auxWireBox()、環形圓紋面auxWireTorus()、圓柱auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺auxWireTeapot()

·                                 背景過程管理函數:auxIdleFunc()

·                                 程序運行函數:auxMainLoop()

4OpenGL工具庫 OpenGL Utility Toolkit

  包含大約30多個函數,函數名前綴爲glutglut是不依賴於窗口平臺的OpenGL工具包,由Mark KLilgradSGI編寫(現在在Nvidia),目的是隱藏不同窗口平臺API的複雜度。 函數以glut開頭,它們作爲aux庫功能更強的替代品,提供更爲複雜的繪製功能,此函數由glut.dll來負責解釋執行。由於glut中的窗口管理函數是不依賴於運行環境的,因此OpenGL中的工具庫可以在X-Window, Windows NT, OS/2等系統下運行,特別適合於開發不需要複雜界面的OpenGL示例程序。對於有經驗的程序員來說,一般先用glut理順3D圖形代碼,然後再集成爲完整的應用程序。

  這部分函數主要包括:

·                                 窗口操作函數:窗口初始化、窗口大小、窗口位置函數等[glutInit()glutInitDisplayMode()glutInitWindowSize()glutInitWindowPosition()]

·                                 回調函數:響應刷新消息、鍵盤消息、鼠標消息、定時器函數[GlutDisplayFunc()glutPostRedisplay()glutReshapeFunc()glutTimerFunc()glutKeyboardFunc()glutMouseFunc()]

·                                 創建複雜的三維物體:這些和aux庫的函數功能相同;

·                                 菜單函數:創建添加菜單的函數GlutCreateMenu()glutSetMenu()glutAddMenuEntry()glutAddSubMenu()glutAttachMenu()

·                                 程序運行函數:glutMainLoop()

5Windows專用庫

  針對windows平臺的擴展,包含有16個函數,函數名前綴爲wgl。這部分函數主要用於連接OpenGLWindows ,以彌補OpenGL在文本方面的不足。 Windows專用庫只能用於Windows環境中。

  這類函數主要包括以下幾類:

·                                 繪圖上下文相關函數:wglCreateContext()wglDeleteContext()wglGetCurrentContent()wglGetCurrentDC()wglDeleteContent()

·                                 文字和文本處理函數:wglUseFontBitmaps()wglUseFontOutlines()

·                                 覆蓋層、地層和主平面層處理函數:wglCopyContext()wglCreateLayerPlane()wglDescribeLayerPlane()wglReakizeLayerPlatte()

·                                 其他函數:wglShareLists()wglGetProcAddress()

6Win32 API函數庫

  包含有6個函數,函數名無專用前綴,是win32擴展函數。這部分函數主要用於處理像素存儲格式和雙幀緩存;這6個函數將替換Windows GDI中原有的同樣的函數。Win32API函數庫只能用於Windows 95/98/NT環境中。

7X窗口專用庫

  是針對UnixLinux的擴展函數。包括渲染上下文、繪製圖元、顯示列表、紋理貼圖等;

·                                 初始化:glXQueryExtension()

·                                 渲染上下文函數:glXCreateContext()glXDestroyContext()glXCopyContext()glXMakeCurrent()glXCreateGLXPixmap()

·                                 執行:glXWaitGL()glXWaitX()

·                                 緩衝區和字體:glXSwapBuffers()glXUseXFont()

8.其他擴展庫

  這些函數可能是新的OpenGL函數,並沒有在標準OpenGL庫中實現,或者它們是用來擴展已存在的OpenGL函數的功能。和gluglxwgl一樣,這些OpenGL擴展是由硬件廠商和廠商組織開發的。OpenGL擴展(OpenGL Extention)包含了大量的擴展API函數。

  隨着硬件的更新,硬件廠商首先向SGI申請登記新的擴展,編寫規格說明書(specification)。然後按照說明書進行開發擴展程序。不同的OpenGL實現(OpenGL Implementation)支持的擴展可能不一樣,只有隨着某一擴展的推廣與應用以及硬件技術的提高該擴展纔會在所有的OpenGL實現中被給予支持,從而最終成爲OpenGL標準庫的一部分。擴展由SGI維護,在SGI網站上列出了目前公開的已註冊的擴展及其官方說明書。擴展源由擴展函數的後綴來指明(或使用擴展常量後綴)。例如,後綴WIN表明一個符合Windows規範的擴展,EXTARB後綴表明該擴展由多個賣主定義。

下面給出OpenGL官方規定的命名規則:

·                                 ARB – OpenGL Architecture Review Board正式覈準的擴展,往往由廠商開發的擴展發展而來,如果同時存在廠商開發的擴展和ARB擴展,應該優先使用ARB擴展;

·                                 EXT – 多家OpenGL廠商同意支持的擴展;

·                                 HP – Hewlett-Packard 惠普;

·                                 IBM – International Business Machines

·                                 KTX – Kinetix, maker of 3D Studio Max

·                                 INTEL – Intel 公司;

·                                 NV – NVIDIA 公司;

·                                 MESA – Brian Paul’s freeware portable OpenGL implementation

·                                 SGI – Silicon Graphics公司開發的擴展;

·                                 SGIX – Silicon Graphics (experimental) 公司開發的實驗性擴展;

·                                 SUN – Sun Microsystems

·                                 WIN – Microsoft

  由於OpenGL擴展在針對不同平臺和不同驅動,OpenGL不可能把所有的接口程序全部放到gl.hglx.hwgl.h中,而是將這些函數頭放在了glext.hglxext.hwglext.h中。這些擴展被看作時OpenGL核心庫規範的增加和修改。

OpenGl核心函數庫

glAccum 操作累加緩衝區
glAddSwapHintRectWIN
定義一組被SwapBuffers拷貝的三角形
glAlphaFunc
允許設置alpha檢測功能
glAreTexturesResident
決定特定的紋理對象是否常駐在紋理內存中
glArrayElement
定義一個被用於頂點渲染的數組成分
glBegin,glEnd
定義一個或一組原始的頂點
glBindTexture
允許建立一個綁定到目標紋理的有名稱的紋理
glBitmap
繪製一個位圖
glBlendFunc
特殊的像素算法
glCallList
執行一個顯示列表
glCallLists
執行一列顯示列表
glClear
用當前值清除緩衝區
GlClearAccum
爲累加緩衝區指定用於清除的值
glClearColor
爲色彩緩衝區指定用於清除的值
glClearDepth
爲深度緩衝區指定用於清除的值
glClearStencil
爲模板緩衝區指定用於清除的值
glClipPlane
定義被裁剪的一個平面幾何體
glColor
設置當前色彩
glColorMask
允許或不允許寫色彩組件幀緩衝區
glColorMaterial
使一個材質色彩指向當前的色彩
glColorPointer
定義一列色彩
glColorTableEXT
定義目的一個調色板紋理的調色板的格式和尺寸
glColorSubTableEXT
定義目的紋理的調色板的一部分被替換
glCopyPixels
拷貝幀緩衝區裏的像素
glCopyTexImage1D
將像素從幀緩衝區拷貝到一個單空間紋理圖象中
glCopyTexImage2D
將像素從幀緩衝區拷貝到一個雙空間紋理圖象中
glCopyTexSubImage1D
從幀緩衝區拷貝一個單空間紋理的子圖象
glCopyTexSubImage2D
從幀緩衝區拷貝一個雙空間紋理的子圖象
glCullFace
定義前面或後面是否能被精選
glDeleteLists
刪除相鄰一組顯示列表
glDeleteTextures
刪除命名的紋理
glDepthFunc
定義用於深度緩衝區對照的數據
glDepthMask
允許或不允許寫入深度緩衝區
glDepthRange
定義z值從標準的設備座標映射到窗口座標
glDrawArrays
定義渲染多個圖元
glDrawBuffer
定義選擇哪個色彩緩衝區被繪製
glDrawElements
渲染數組數據中的圖元
glDrawPixels
將一組像素寫入幀緩衝區
glEdgeFlag
定義一個邊緣標誌數組
glEdgeFlagPointer
定義一個邊緣標誌數組
glEnable, glDisable
打開或關閉OpenGL的特殊功能
glEnableClientState,glDisableClientState
分別打開或關閉數組
glEvalCoord
求解一維和二維貼圖
glEvalMesh1,glEvalMesh2
求解一維和二維點或線的網格
glEvalPoint1,glEvalPoint2
生成及求解一個網格中的單點
glFeedbackBuffer
控制反饋模式
glFinish
等待直到OpenGL執行結束
glFlush
在有限的時間裏強制OpenGL的執行
glFogf,glFogi,glFogfv,glFogiv
定義霧參數
glFrontFace
定義多邊形的前面和背面
glFrustum
當前矩陣乘上透視矩陣
glGenLists
生成一組空的連續的顯示列表
glGenTextures
生成紋理名稱
glGetBooleanv,glGetDoublev,glGetFloatv,glGetIntegerv
返回值或所選參數值
glGetClipPlane
返回特定裁減面的係數
glGetColorTableEXT
從當前目標紋理調色板得到顏色表數據
glGetColorTableParameterfvEXT,glGetColorTableParameterivEXT
從顏色表中得到調色板參數
glGetError
返回錯誤消息
glGetLightfv,glGetLightiv
返回光源參數值
glGetMapdv,glGetMapfv,glGetMapiv
返回求值程序參數
glGetMaterialfv,glGetMaterialiv
返回材質參數
glGetPixelMapfv,glGetpixelMapuiv,glGetpixelMapusv
返回特定的像素圖
glGetPointerv
返回頂點數據數組的地址
glGetPolygonStipple
返回多邊形的點圖案
glGetString
返回描述當前OpenGl連接的字符串
glGetTexEnvfv
返回紋理環境參數
glGetTexGendv,glGetTexGenfv,glGetTexGeniv
返回紋理座標生成參數
glGetTexImage
返回一個紋理圖象
glGetTexLevelParameterfv,glGetTexLevelParameteriv
返回特定的紋理參數的細節級別
glGetTexParameterfv,glGetTexParameteriv
返回紋理參數值
glHint
定義實現特殊的線索
glIndex
建立當前的色彩索引
glIndexMask
控制寫色彩索引緩衝區裏的單獨位
GlIndexPointer
定義一個顏色索引數組
glInitName
初始化名字堆棧
glInterleavedArrays
同時定義和允許幾個在一個大的數組集合裏的交替數組
glIsEnabled
定義性能是否被允許
glIsList
檢測顯示列表的存在
glIsTexture
確定一個名字對應一個紋理
glLightf,glLighti,glLightfv,glLightiv
設置光源參數
glLightModelf,glLightModeli,glLightModelfv,glLightModeliv
設置光線模型參數
glLineStipple
設定線點繪圖案
glLineWidth
設定光柵線段的寬
glListBase
glcallList設定顯示列表的基礎
glLoadIdentity
用恆等矩陣替換當前矩陣
glLoadMatrixd,glLoadMatrif
用一個任意矩陣替換當前矩陣
glLoadName
將一個名字調入名字堆棧
glLogicOp
爲色彩索引渲染定義一個邏輯像素操作
glMap1d,glMap1f
定義一個一維求值程序
glMap2d,glMap2f
定義一個二維求值程序
glMapGrid1d,glMapGrid1f,glMapgrid2d,glMapGrid2f
定義一個一維或二維網格
glMaterialf,glMateriali,glMateriafv,glMaterialiv
爲光照模型定義材質參數
glMatrixMode
定義哪一個矩陣是當前矩陣
glMultMatrixd,glMultMatrixf
用當前矩陣與任意矩陣相乘
glNewList,glEndList
創建或替換一個顯示列表
glNormal
設定當前頂點法向
glNormalPointer
設定一個法向數組
glOrtho
用垂直矩陣與當前矩陣相乘
glPassThrough
在反饋緩衝區做記號
glPixelMapfv,glPixelMapuiv,glPixelMapusv
設定像素交換圖
glPixelStoref,glpixelStorei
設定像素存儲模式
glPixelTransferf,glPixelTransferi
設定像素存儲模式
glPixelZoom
設定像素縮放因數
glPointSize
設定光柵點的直徑
glPolygonMode
選擇一個多邊形的光柵模式
glPolygonOffset
設定OpenGL用於計算深度值的比例和單元
glPolygonStipple
設定多邊形填充圖案
glPrioritizeTextures
設定紋理固定的優先級
glPushAttrib,glPopAttrib
屬性堆棧的壓入和彈出操作
glPushClientAttrib,glPopClientAttrib
在客戶屬性堆棧存儲和恢復客戶狀態值
glPushmatrix,glPopMatrix
矩陣堆棧的壓入和彈出操作
glPushName,glPopName
名字堆棧的壓入和彈出操作
glRasterPos
定義像素操作的光柵位置
glreadBuffer
爲像素選擇一個源色彩緩衝區
glReadPixels
從幀緩衝區讀取一組數據
glRectd,glRectf,glRecti,glRects,glRectdv,glRectfv,glRectiv,glRectsv
繪製一個三角形
glRenderMode
定義光柵模式
glRotated,glRotatef
將旋轉矩陣與當前矩陣相乘
glScaled,glScalef
將一般的比例矩陣與當前矩陣相乘
glScissor
定義裁減框
glSelectBuffer
爲選擇模式值建立一個緩衝區
glShadeModel
選擇平直或平滑着色
glStencilFunc
爲模板測試設置功能和參照值
glStencilMask
控制在模板面寫單獨的位
glStencilOp
設置激活模式測試
glTexCoord
設置當前紋理座標
glTexCoordPointer
定義一個紋理座標數組
glTexEnvf,glTexEnvi,glTexEnvfv,glTexEnviv
設定紋理座標環境參數
glTexGend,glTexgenf,glTexGendv,glTexGenfv,glTexGeniv
控制紋理座標的生成
glTexImage1D
定義一個一維的紋理圖象
glTexImage2D
定義一個二維的紋理圖
glTexParameterf,glTexParameteri,glTexParameterfv,glTexParameteriv
設置紋理參數
glTexSubImage1D
定義一個存在的一維紋理圖像的一部分,但不能定義新的紋理
glTexSubImage2D
定義一個存在的二維紋理圖像的一部分,但不能定義新的紋理
glTranslated,glTranslatef
將變換矩陣與當前矩陣相乘
glVertex
定義一個頂點
glVertexPointer
設定一個頂點數據數組
glViewport
設置視窗

[OpenGL應用函數庫]


gluBeginCurve,gluEndCurve
定義一條不一至的有理的NURBS曲線
gluBeginPolygon,gluEndPolygon
定義一個非凸多邊形
gluBeginSurface,gluEndSurface
定義一個NURBS曲線
gluBeginTrim,gluEndTrim
定義一個NURBS整理循環
gluBuild1Dmipmaps
建立一維多重映射
gluBuild2Dmipmaps
建立二維多重映射
gluCylinder
繪製一個圓柱
gluDeleteNurbsRenderer
刪除一個NURBS對象
gluDeleQuadric
刪除一個二次曲面對象
gluDeleteTess
刪除一個鑲嵌對象
gluDisk
繪製一個盤子
gluErrorString
根據OpenGLGLU錯誤代碼產生錯誤字符串
gluGetNutbsProperty
得到一個NURBS屬性
gluGetString
得到一個描述GLU版本號或支持GLU擴展調用的字符串
gluGetTessProperty
得到一個鑲嵌對象
gluLoadSamplingMatrices
加載NUMRBS例子和精選矩陣
gluLookAt
設定一個變換視點
gluNewNurbsRenderer
創建一個NURBS對象
gluNewQuadric
建立一個二次曲面對象
gluNewTess
建立一個鑲嵌對象
gluNextContour
爲其他輪廓的開始做標記
gluNurbsCallback
NURBS對象設定一個回調
gluNnrbsCurve
設定一個NuRBS曲線的形狀
gluNurbsProperty
設定一個NURBS屬性
gluNurbsSurface
定義一個NURBS表面的形狀
gluOrtho2D
定義一個二位正交投影矩陣
gluPartialDisk
繪製一個盤子的弧
gluPerspective
設置一個透視投影矩陣
gluPickMatrix
定義一個拾取區間
gluProject
將對象座標映射爲窗口座標
gluPwlCurve
描述一個分段線性NURBS修剪曲線
gluQuadricCallback
爲二次曲面對象定義一個回調
gluQuadricDrawStyle
爲二次曲面設定合適的繪製風格
gluQuadricNormals
定義二次曲面所用的法向的種類
gluQuadricOrientation
定義二次曲面內部或外部方向
gluQuadricTexture
定義是否帶二次其面做紋理帖圖
gluScaleImage
將圖象變換爲任意尺寸
gluSphere
繪製一個球體
gluTessBeginContour,gluTessEndContour
劃定一個邊界描述
gluTessBeginPolygon,gluTessEndPolygon
劃定一個多邊形描述
gluTessCallback
爲鑲嵌對象定義一個回調
gluTessNormal
爲一個多邊行形定義法向
gluTessProperty
設置鑲嵌對象的屬性
gluTessVertex
定義在一個多邊形上的頂點
gluUnProject
將窗口座標映射爲對象座標

 

 

 

glAccum 操作累加緩衝區
glAddSwapHintRectWIN
定義一組被SwapBuffers拷貝的三角形
glAlphaFunc
允許設置alpha檢測功能
glAreTexturesResident
決定特定的紋理對象是否常駐在紋理內存中
glArrayElement
定義一個被用於頂點渲染的數組成分
glBegin,glEnd
定義一個或一組原始的頂點
glBindTexture
允許建立一個綁定到目標紋理的有名稱的紋理
glBitmap
繪製一個位圖
glBlendFunc
特殊的像素算法
glCallList
執行一個顯示列表
glCallLists
執行一列顯示列表
glClear
用當前值清除緩衝區
GlClearAccum
爲累加緩衝區指定用於清除的值
glClearColor
爲色彩緩衝區指定用於清除的值
glClearDepth
爲深度緩衝區指定用於清除的值
glClearStencil
爲模板緩衝區指定用於清除的值
glClipPlane
定義被裁剪的一個平面幾何體
glColor
設置當前色彩
glColorMask
允許或不允許寫色彩組件幀緩衝區
glColorMaterial
使一個材質色彩指向當前的色彩
glColorPointer
定義一列色彩
glColorTableEXT
定義目的一個調色板紋理的調色板的格式和尺寸
glColorSubTableEXT
定義目的紋理的調色板的一部分被替換
glCopyPixels
拷貝幀緩衝區裏的像素
glCopyTexImage1D
將像素從幀緩衝區拷貝到一個單空間紋理圖象中
glCopyTexImage2D
將像素從幀緩衝區拷貝到一個雙空間紋理圖象中
glCopyTexSubImage1D
從幀緩衝區拷貝一個單空間紋理的子圖象
glCopyTexSubImage2D
從幀緩衝區拷貝一個雙空間紋理的子圖象
glCullFace
定義前面或後面是否能被精選
glDeleteLists
刪除相鄰一組顯示列表
glDeleteTextures
刪除命名的紋理
glDepthFunc
定義用於深度緩衝區對照的數據
glDepthMask
允許或不允許寫入深度緩衝區
glDepthRange
定義z值從標準的設備座標映射到窗口座標
glDrawArrays
定義渲染多個圖元
glDrawBuffer
定義選擇哪個色彩緩衝區被繪製
glDrawElements
渲染數組數據中的圖元
glDrawPixels
將一組像素寫入幀緩衝區
glEdgeFlag
定義一個邊緣標誌數組
glEdgeFlagPointer
定義一個邊緣標誌數組
glEnable, glDisable
打開或關閉OpenGL的特殊功能
glEnableClientState,glDisableClientState
分別打開或關閉數組
glEvalCoord
求解一維和二維貼圖
glEvalMesh1,glEvalMesh2
求解一維和二維點或線的網格
glEvalPoint1,glEvalPoint2
生成及求解一個網格中的單點
glFeedbackBuffer
控制反饋模式
glFinish
等待直到OpenGL執行結束
glFlush
在有限的時間裏強制OpenGL的執行
glFogf,glFogi,glFogfv,glFogiv
定義霧參數
glFrontFace
定義多邊形的前面和背面
glFrustum
當前矩陣乘上透視矩陣
glGenLists
生成一組空的連續的顯示列表
glGenTextures
生成紋理名稱
glGetBooleanv,glGetDoublev,glGetFloatv,glGetIntegerv
返回值或所選參數值
glGetClipPlane
返回特定裁減面的係數
glGetColorTableEXT
從當前目標紋理調色板得到顏色表數據
glGetColorTableParameterfvEXT,glGetColorTableParameterivEXT
從顏色表中得到調色板參數
glGetError
返回錯誤消息
glGetLightfv,glGetLightiv
返回光源參數值
glGetMapdv,glGetMapfv,glGetMapiv
返回求值程序參數
glGetMaterialfv,glGetMaterialiv
返回材質參數
glGetPixelMapfv,glGetpixelMapuiv,glGetpixelMapusv
返回特定的像素圖
glGetPointerv
返回頂點數據數組的地址
glGetPolygonStipple
返回多邊形的點圖案
glGetString
返回描述當前OpenGl連接的字符串
glGetTexEnvfv
返回紋理環境參數
glGetTexGendv,glGetTexGenfv,glGetTexGeniv
返回紋理座標生成參數
glGetTexImage
返回一個紋理圖象
glGetTexLevelParameterfv,glGetTexLevelParameteriv
返回特定的紋理參數的細節級別
glGetTexParameterfv,glGetTexParameteriv
返回紋理參數值
glHint
定義實現特殊的線索
glIndex
建立當前的色彩索引
glIndexMask
控制寫色彩索引緩衝區裏的單獨位
GlIndexPointer
定義一個顏色索引數組
glInitName
初始化名字堆棧
glInterleavedArrays
同時定義和允許幾個在一個大的數組集合裏的交替數組
glIsEnabled
定義性能是否被允許
glIsList
檢測顯示列表的存在
glIsTexture
確定一個名字對應一個紋理
glLightf,glLighti,glLightfv,glLightiv
設置光源參數
glLightModelf,glLightModeli,glLightModelfv,glLightModeliv
設置光線模型參數
glLineStipple
設定線點繪圖案
glLineWidth
設定光柵線段的寬
glListBase
glcallList設定顯示列表的基礎
glLoadIdentity
用恆等矩陣替換當前矩陣
glLoadMatrixd,glLoadMatrif
用一個任意矩陣替換當前矩陣
glLoadName
將一個名字調入名字堆棧
glLogicOp
爲色彩索引渲染定義一個邏輯像素操作
glMap1d,glMap1f
定義一個一維求值程序
glMap2d,glMap2f
定義一個二維求值程序
glMapGrid1d,glMapGrid1f,glMapgrid2d,glMapGrid2f
定義一個一維或二維網格
glMaterialf,glMateriali,glMateriafv,glMaterialiv
爲光照模型定義材質參數
glMatrixMode
定義哪一個矩陣是當前矩陣
glMultMatrixd,glMultMatrixf
用當前矩陣與任意矩陣相乘
glNewList,glEndList
創建或替換一個顯示列表
glNormal
設定當前頂點法向
glNormalPointer
設定一個法向數組
glOrtho
用垂直矩陣與當前矩陣相乘
glPassThrough
在反饋緩衝區做記號
glPixelMapfv,glPixelMapuiv,glPixelMapusv
設定像素交換圖
glPixelStoref,glpixelStorei
設定像素存儲模式
glPixelTransferf,glPixelTransferi
設定像素存儲模式
glPixelZoom
設定像素縮放因數
glPointSize
設定光柵點的直徑
glPolygonMode
選擇一個多邊形的光柵模式
glPolygonOffset
設定OpenGL用於計算深度值的比例和單元
glPolygonStipple
設定多邊形填充圖案
glPrioritizeTextures
設定紋理固定的優先級
glPushAttrib,glPopAttrib
屬性堆棧的壓入和彈出操作
glPushClientAttrib,glPopClientAttrib
在客戶屬性堆棧存儲和恢復客戶狀態值
glPushmatrix,glPopMatrix
矩陣堆棧的壓入和彈出操作
glPushName,glPopName
名字堆棧的壓入和彈出操作
glRasterPos
定義像素操作的光柵位置
glreadBuffer
爲像素選擇一個源色彩緩衝區
glReadPixels
從幀緩衝區讀取一組數據
glRectd,glRectf,glRecti,glRects,glRectdv,glRectfv,glRectiv,glRectsv
繪製一個三角形
glRenderMode
定義光柵模式
glRotated,glRotatef
將旋轉矩陣與當前矩陣相乘
glScaled,glScalef
將一般的比例矩陣與當前矩陣相乘
glScissor
定義裁減框
glSelectBuffer
爲選擇模式值建立一個緩衝區
glShadeModel
選擇平直或平滑着色
glStencilFunc
爲模板測試設置功能和參照值
glStencilMask
控制在模板面寫單獨的位
glStencilOp
設置激活模式測試
glTexCoord
設置當前紋理座標
glTexCoordPointer
定義一個紋理座標數組
glTexEnvf,glTexEnvi,glTexEnvfv,glTexEnviv
設定紋理座標環境參數
glTexGend,glTexgenf,glTexGendv,glTexGenfv,glTexGeniv
控制紋理座標的生成
glTexImage1D
定義一個一維的紋理圖象
glTexImage2D
定義一個二維的紋理圖
glTexParameterf,glTexParameteri,glTexParameterfv,glTexParameteriv
設置紋理參數
glTexSubImage1D
定義一個存在的一維紋理圖像的一部分,但不能定義新的紋理
glTexSubImage2D
定義一個存在的二維紋理圖像的一部分,但不能定義新的紋理
glTranslated,glTranslatef
將變換矩陣與當前矩陣相乘
glVertex
定義一個頂點
glVertexPointer
設定一個頂點數據數組
glViewport
設置視窗[OpenGL應用函數庫]
gluBeginCurve,gluEndCurve
定義一條不一至的有理的NURBS曲線
gluBeginPolygon,gluEndPolygon
定義一個非凸多邊形
gluBeginSurface,gluEndSurface
定義一個NURBS曲線
gluBeginTrim,gluEndTrim
定義一個NURBS整理循環
gluBuild1Dmipmaps
建立一維多重映射
gluBuild2Dmipmaps
建立二維多重映射
gluCylinder
繪製一個圓柱
gluDeleteNurbsRenderer
刪除一個NURBS對象
gluDeleQuadric
刪除一個二次曲面對象
gluDeleteTess
刪除一個鑲嵌對象
gluDisk
繪製一個盤子
gluErrorString
根據OpenGLGLU錯誤代碼產生錯誤字符串
gluGetNutbsProperty
得到一個NURBS屬性
gluGetString
得到一個描述GLU版本號或支持GLU擴展調用的字符串
gluGetTessProperty
得到一個鑲嵌對象
gluLoadSamplingMatrices
加載NUMRBS例子和精選矩陣
gluLookAt
設定一個變換視點
gluNewNurbsRenderer
創建一個NURBS對象
gluNewQuadric
建立一個二次曲面對象
gluNewTess
建立一個鑲嵌對象
gluNextContour
爲其他輪廓的開始做標記
gluNurbsCallback
NURBS對象設定一個回調
gluNnrbsCurve
設定一個NuRBS曲線的形狀
gluNurbsProperty
設定一個NURBS屬性
gluNurbsSurface
定義一個NURBS表面的形狀
gluOrtho2D
定義一個二位正交投影矩陣
gluPartialDisk
繪製一個盤子的弧
gluPerspective
設置一個透視投影矩陣
gluPickMatrix
定義一個拾取區間
gluProject
將對象座標映射爲窗口座標
gluPwlCurve
描述一個分段線性NURBS修剪曲線
gluQuadricCallback
爲二次曲面對象定義一個回調
gluQuadricDrawStyle.
爲二次曲面設定合適的繪製風格
gluQuadricNormals
定義二次曲面所用的法向的種類
gluQuadricOrientation
定義二次曲面內部或外部方向
gluQuadricTexture
定義是否帶二次其面做紋理帖圖
gluScaleImage
將圖象變換爲任意尺寸
gluSphere
繪製一個球體
gluTessBeginContour,gluTessEndContour
劃定一個邊界描述
gluTessBeginPolygon,gluTessEndPolygon
劃定一個多邊形描述
gluTessCallback
爲鑲嵌對象定義一個回調
gluTessNormal
爲一個多邊行形定義法向
gluTessProperty
設置鑲嵌對象的屬性
gluTessVertex
定義在一個多邊形上的頂點
gluUnProject
將窗口座標映射爲對象座標

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章