日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL 库 简介

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL 库 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenGL 庫 簡介

???????OpenGL庫函數的命名方式為:<庫前綴><根命令><可選的參數個數><可選的參數類型>。

庫前綴有gl、glu、aux、glut、wgl、glx、agl等等,表示該函數屬于OpenGL哪個庫。參數的類型:I代表int型,f代表float型,d代表double型,u代表無符號整型。例如glVertex3fv()表示了該函數屬于gl庫,參數是3個float型參數指針。用glVertex*()來表示這一類函數。

?

?

gl

glu

aux

glut

庫名稱

基本庫

實用庫

輔助庫

實用工具庫

庫前綴

gl

glu

aux

glut

與其它庫聯系

?

對gl的部分封裝,提供相對簡單的用法,實現一些較為復雜的操作。

?

比aux功能強大,替代aux。

函數個數

115

43

31

30多

庫作用

常規的、核心的圖形處理。

繪制復雜的曲線曲面、高級坐標變換、多邊形分割等。

簡單的窗口管理、輸入事件處理、復雜3D物體繪制等。

用來打開窗口、開發和管理菜單,管理事件。

運行平臺

所有

所有

aux庫在windows實現有很多錯誤,容易導致頻繁的崩潰。在跨平臺的編程實例和演示中,aux很大程度上已經被glut庫取代。不能在所有平臺上運行。

X-Window, Windows NT, OS/2等。特別適合于開發不需要復雜界面的OpenGL示例程序。一般先用glut理順3D圖形代碼,然后再集成為完整的應用程序。

解釋執行

gl.dll

glu.dll

glaux.dll

glut.dll

?

wgl

?

?

?

庫名稱

Windows專用庫

Win32 API函數庫

X窗口專用庫

擴展函數庫

庫前綴

wgl

無專用

?

?

與其它庫聯系

針對windows平臺的擴展。連接OpenGL和Windows,彌補OpenGL在文本方面的不足。

win32擴展函數

針對Unix和Linux的擴展函數。

?

?

函數個數

16

6

?

?

庫作用

創建和選擇圖形操作描述表以及在窗口內任一位置顯示字符位圖。

處理像素存儲格式和雙幀緩存。

渲染上下文、繪制圖元、顯示列表、紋理貼圖、等。

硬件廠商為實現硬件更新利用OpenGL的擴展機制開發的函數。

運行平臺

Windows

Windows95/98/NT

?

?

解釋執行

?

?

?

?

?

1、基本庫(GL)

  (1)繪制基本幾何圖元的函數。

glBegain()、glEnd()、glNormal*()、glVertex*()。

  (2)矩陣操作、幾何變換和投影變換的函數。

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

  (3)顏色、光照和材質的函數。

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

  (4)顯示列表函數。

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

  (5)紋理映射函數。

  主要有一維紋理函數glTexImage1D()、二維紋理函數glTexImage2D()、設置紋理參數、紋理環境和紋理坐標的函數glTexParameter*()、glTexEnv*()和glTetCoord*()等。

  (6)特殊效果函數。

  融合函數glBlendFunc()、反走樣函數glHint()和霧化效果glFog*()。

  (7)光柵化、象素操作函數。

  像素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪制模式glPolygonMode(),讀取象素glReadPixel()、復制象素glCopyPixel()等。

  (8)選擇與反饋函數。

  主要有渲染模式glRenderMode()、選擇緩沖區glSelectBuffer()和反饋緩沖區glFeedbackBuffer()等。

  (9)曲線與曲面的繪制函數。

  生成曲線或曲面的函數glMap*()、glMapGrid*(),求值器的函數glEvalCoord*() glEvalMesh*()。

  (10)狀態設置與查詢函數。主要有glGet*()、glEnable()、glGetError()等。

?

2、實用庫(OpenGL Utility Library,GLU)

  (1)輔助紋理貼圖函數。

  有gluScaleImage()?、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()等。

  (2)坐標轉換和投影變換函數。

  定義投影方式函數gluPerspective()、gluOrtho2D()?、gluLookAt(),拾取投影視景體函數gluPickMatrix(),投影矩陣計算gluProject()和?gluUnProject()等。

  (3)多邊形鑲嵌工具。

  有gluNewTess()、?gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()等。

  (4)二次曲面繪制工具。

  主要有繪制球面、錐面、柱面、圓環面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()等等。

  (5)非均勻有理B樣條繪制工具。

  主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、gluNurbsProperty()等函數。

  (6)錯誤反饋工具。

獲取出錯信息的字符串gluErrorString()等。

?

3、輔助庫(OpenGL auxiliarylibrary,GLAUX)

  (1)窗口初始化和退出函數。

auxInitDisplayMode()和auxInitPosition()。

  (2)窗口處理和時間輸入函數。

auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。

  (3)顏色索引裝入函數。

auxSetOneColor()。

  (4)三維物體繪制函數。

  包括了兩種形式網狀體和實心體,如繪制立方體auxWireCube()和?auxSolidCube()。這里以網狀體為例,長方體auxWireBox()、環形圓紋面auxWireTorus()、圓柱?auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體?auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺?auxWireTeapot()。繪制實心體只要將上述函數中的確"Wire"更換成"Solid"就可以了。

  (5)其他。

  背景過程管理函數auxIdleFunc();程序運行函數auxMainLoop()。

?

4、OpenGL實用工具包(OpenGL Utility Toolkit,GLUT)

  (1)窗口操作函數

  窗口初始化、窗口大小、窗口位置等函數glutInit() glutInitDisplayMode()、glutInitWindowSize() glutInitWindowPosition()等。

  (2)回調函數。

  響應刷新消息、鍵盤消息、鼠標消息、定時器函數等,GlutDisplayFunc()、glutPostRedisplay()、glutReshapeFunc()、glutTimerFunc()、glutKeyboardFunc()、?glutMouseFunc()。

  (3)創建復雜的三維物體。這些和aux庫的函數功能相同。創建網狀體和實心體。如glutSolidSphere()、glutWireSphere()等。

  (4)菜單函數

  創建添加菜單的函數GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu()和glutAttachMenu()。

  (5)程序運行函數。

glutMainLoop()。

?

5、Windows專用庫

  (1)繪圖上下文相關函數。

wglCreateContext()、wglDeleteContext()、wglGetCurrentContent()、wglGetCurrentDC() wglDeleteContent()等。

  (2)文字和文本處理函數。

wglUseFontBitmaps()、wglUseFontOutlines()。

  (3)覆蓋層、地層和主平面層處理函數。

wglCopyContext()、wglCreateLayerPlane()、wglDescribeLayerPlane()、wglReakizeLayerPlatte()等。

  (4)其他函數。

wglShareLists()、wglGetProcAddress()等。

?

6、X窗口專用庫

(1)初始化

glXQueryExtension()

(2)渲染上下文函數

glXCreateContext() glXDestroyContext() glXCopyContext() glXMakeCurrent() glXCreateGLXPixmap()

(3)執行

glXWaitGL()、glXWaitX()

(4)緩沖區和字體

glXSwapBuffers()、glXUseXFont()

總結

以上是生活随笔為你收集整理的OpenGL 库 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。