青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

OpenGL開發庫的介紹[轉載]

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

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

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



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

  1 . OpenGL 核心庫

  核心庫包含有 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() 。

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

  包含有 43 個函數,函數名的前綴為 glu 。 OpenGL 提供了強大的但是為數不多的繪圖命令,所有較復雜的繪圖都必須從點、線、面開始。 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() 。

  3 . OpenGL 輔助庫

  包含有 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() 。

  4 . OpenGL 工具庫 OpenGL Utility Toolkit

  包含大約 30 多個函數,函數名前綴為 glut 。 glut 是不依賴于窗口平臺的 OpenGL 工具包,由 Mark KLilgrad 在 SGI 編寫(現在在 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() 。

  5 . Windows 專用庫

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

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

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

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

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

  其他函數: wglShareLists() 、 wglGetProcAddress() 。

  6 . Win32 API 函數庫

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

  7 . X 窗口專用庫

  是針對 Unix 和 Linux 的擴展函數。包括渲染上下文、繪制圖元、顯示列表、紋理貼圖等;
初始化: glXQueryExtension() ;

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

  執行: glXWaitGL() 、 glXWaitX() ;

  緩沖區和字體: glXSwapBuffers() 、 glXUseXFont() 。

  8 .其他擴展庫

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

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

  下面給出 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.h 、 glx.h 、 wgl.h 中,而是將這些函數頭放在了 glext.h 、 glxext.h 和 wglext.h 中。這些擴展被看作時 OpenGL 核心庫規范的增加和修改。

posted on 2007-04-07 22:08 楊粼波 閱讀(742) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费欧美日韩| 亚洲一区高清| 蜜桃av综合| 久久精品一区二区三区不卡| 欧美一区二区高清在线观看| 欧美一区二区三区精品| 欧美专区18| 麻豆精品在线视频| 欧美日本中文字幕| 欧美系列一区| 国产视频在线观看一区二区| 激情成人在线视频| 99riav久久精品riav| 在线亚洲欧美| 久久久99精品免费观看不卡| 久热国产精品视频| 日韩视频免费大全中文字幕| 亚洲一区二区三区精品动漫| 欧美一区影院| 欧美久久影院| 国产一区久久| 在线性视频日韩欧美| 伊人色综合久久天天| 亚洲精品乱码久久久久久黑人| 亚洲在线播放电影| 欧美激情久久久久久| 亚洲一级一区| 欧美黄污视频| 狠狠色香婷婷久久亚洲精品| 亚洲夜间福利| 亚洲福利在线视频| 一区二区电影免费观看| 久久久久久午夜| 国产精品久久77777| 亚洲国产精品123| 久久精品二区| 久久青青草原一区二区| 国产精品国产a| 国产日本欧美一区二区| 日韩视频永久免费观看| 久久精品国产亚洲一区二区| 亚洲激情网址| 久久久999国产| 国产精品久久亚洲7777| 亚洲九九精品| 亚洲国产成人久久综合一区| 欧美在线啊v一区| 国产精品高清在线| 亚洲一区二区三区乱码aⅴ| 欧美大色视频| 久久综合色8888| 一区二区三区在线不卡| 久久国产精品第一页| 中文在线一区| 欧美午夜精品久久久久免费视| 亚洲精品久久嫩草网站秘色| 亚洲第一精品在线| 免费在线观看精品| 亚洲人成在线观看| 亚洲国产成人av好男人在线观看| 久久国产精品一区二区三区四区| 国产欧美精品一区二区三区介绍 | 亚洲第一伊人| 久久夜色精品国产噜噜av| 国内一区二区三区| 久久久久一区二区| 久久免费观看视频| 亚洲国产精品日韩| 亚洲片在线资源| 欧美日韩国产综合网| 99精品福利视频| 亚洲美女av在线播放| 欧美人成在线| 亚洲欧美日韩高清| 亚洲一区二区在线免费观看视频| 欧美三级视频在线| 欧美一级专区| 香蕉国产精品偷在线观看不卡| 国产亚洲人成a一在线v站| 久久婷婷综合激情| 欧美成人自拍| 午夜精品久久久| 久久久久久综合| 一区二区三区黄色| 亚洲女人av| 黄色在线一区| 亚洲精品在线视频| 国产精品vip| 久热精品在线视频| 欧美精品色一区二区三区| 亚洲欧美综合| 巨乳诱惑日韩免费av| 亚洲午夜久久久| 久久精品道一区二区三区| 亚洲国产精品欧美一二99| 亚洲专区一二三| 久久久久久久成人| 欧美国产综合| 久久aⅴ国产紧身牛仔裤| 久久夜色精品国产| 午夜一区二区三视频在线观看| 久久精品亚洲精品| 亚洲一区二区三区激情| 久久九九国产精品| 亚洲一区二区三区欧美| 久久精品论坛| 午夜精品久久久久久99热| 毛片av中文字幕一区二区| 亚洲一区二区三区免费观看| 蜜桃av久久久亚洲精品| 欧美一区二区三区电影在线观看| 美女国产一区| 久久久999国产| 国产精品一卡二| 日韩一区二区电影网| 亚洲国产精品一区二区三区| 先锋亚洲精品| 午夜在线电影亚洲一区| 欧美日韩精品欧美日韩精品| 欧美激情欧美激情在线五月| 国产有码一区二区| 午夜国产精品视频| 亚洲欧美国产日韩天堂区| 欧美理论在线| 亚洲黄色成人久久久| 亚洲国产高潮在线观看| 欧美专区18| 久久久亚洲国产美女国产盗摄| 国产精品永久入口久久久| 一区二区欧美国产| 日韩视频在线观看| 欧美精品99| 亚洲国产精品v| 亚洲日韩中文字幕在线播放| 老司机aⅴ在线精品导航| 蜜臀99久久精品久久久久久软件| 国产一区二区欧美日韩| 欧美一区三区二区在线观看| 午夜久久电影网| 国产欧美一区二区精品婷婷| 亚洲综合精品一区二区| 欧美中文字幕视频| 国产午夜精品麻豆| 久久精品在这里| 蜜臀99久久精品久久久久久软件| 亚洲福利视频在线| 牛人盗摄一区二区三区视频| 欧美激情视频网站| 亚洲精选久久| 国产精品va在线播放| 香蕉精品999视频一区二区| 久久九九电影| 亚洲福利视频在线| 欧美人成在线| 亚洲制服av| 久久久另类综合| 亚洲大片在线观看| 欧美韩日视频| 亚洲女性裸体视频| 久久久另类综合| 最新亚洲一区| 国产精品久久久久久久久久尿| 欧美一区二区成人| 亚洲激情不卡| 欧美特黄视频| 久久久999精品| 亚洲精品免费网站| 国产精品激情av在线播放| 午夜影视日本亚洲欧洲精品| 免费成人高清| 亚洲伊人色欲综合网| 国产女主播一区| 欧美v日韩v国产v| 亚洲午夜在线| 欧美国产视频在线| 亚洲一区二区在线免费观看视频| 国产亚洲欧美色| 欧美日韩免费在线视频| 羞羞漫画18久久大片| 亚洲国产精品久久久久婷婷884| 亚洲一区二区精品在线| 曰本成人黄色| 国产精品久久久久久超碰| 久久久综合网站| 这里只有精品视频| 亚洲大胆在线| 久久精品视频99| 亚洲淫性视频| 亚洲伦理在线| 在线观看亚洲a| 国产日韩一区二区三区在线播放| 欧美精品免费看| 久久美女性网| 香蕉国产精品偷在线观看不卡| 亚洲精品日韩激情在线电影| 麻豆精品视频在线观看视频| 香蕉免费一区二区三区在线观看| 99在线|亚洲一区二区| 亚洲夫妻自拍| 亚洲国产另类精品专区|