1 / 14

Introduction to OpenGL (1)

Introduction to OpenGL (1). 靜宜大學資工系 蔡奇偉 副教授 2001-2010. 大綱. OpenGL 是什麼? 簡史 程式庫 命名規則 繪圖架構 主要參考資料. OpenGL 是什麼?. OpenGL 是一套 2D/3D 的繪圖 API ( Application Program Interface ),其中包含了約 250 個函式。透過這些函式,我們可以利用繪圖卡的 2D/3D 硬體加速功能,免去 CPU 用於繪圖的負擔,因而提高系統整體的繪圖效率。

boyce
Download Presentation

Introduction to OpenGL (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to OpenGL (1) 靜宜大學資工系 蔡奇偉 副教授 2001-2010

  2. 大綱 • OpenGL 是什麼? • 簡史 • 程式庫 • 命名規則 • 繪圖架構 • 主要參考資料

  3. OpenGL 是什麼? OpenGL 是一套 2D/3D 的繪圖 API(Application Program Interface),其中包含了約 250 個函式。透過這些函式,我們可以利用繪圖卡的 2D/3D 硬體加速功能,免去 CPU 用於繪圖的負擔,因而提高系統整體的繪圖效率。 OpenGL 是一套跨平台的繪圖函式庫,因此使用 OpenGL 的繪圖程式具有高度的可攜性(即可以很容易地把程式移植到不同的電腦系統中)。 然而,OpenGL 並不包含處理視窗與人機介面的函式,這些功能得靠所使用的視窗系統來支援。

  4. OpenGL 的簡史 • 1983 IRIS GL ships with SGI IRIS 1000 terminal • 1987 SGI and Pixar consider joint API development • 1991 OpenGL ARB created • 1992 OpenGL 1.0 completed (June 30) • 1995 OpenGL 1.1 released (vertex array, texture objects, new texenvmodes) • 1997 Fahrenheit agreement between SGI and Microsoft • 1998 OpenGL 1.2 released (3D textures, separate specular, imaging) • 1999 OpenGL 1.2.1 released (multi-texture) • 2001 OpenGL 1.3 released (compressed texture, cube maps, multisample,dot3) • 2002 OpenGL 1.4 (mip-map generation, shadows, point parameters) • 2003 OpenGL 1.5 (vertex buffer objects, occlusion query) ARB extensions: OpenGL Shading language, ARB_vertex_program, ARB_fragment_program • 2004 OpenGL 2.0

  5. OpenGL 程式庫

  6. 命名規則 • OpenGL • 通常以 GL 或 gl 開頭 • GLU • 以 glu 開頭 • GLUT • 以 glut 開頭

  7. OpenGL Software Rasterizer Application Program OS Services I/O Services GDI OpenGL Software Rasterizer Display Device GDI: Graphics Device Interface

  8. OpenGL Hardware Rasterizer Application Program OS Services I/O Services GDI OpenGL Display Device Hardware Driver GDI : Graphic Device Interface

  9. OpenGL Hybrid Rasterizer Application Program OS Services I/O Services GDI OpenGL Software Rasterizer Display Device Hardware Driver

  10. OpenGL 資料處理流程

  11. Vertex Data • OpenGL 處理的幾何模型都是由 vertices 組合而成。 • Pixel Data • 圖片或紋理貼圖(texture)是由像素所組成。 • Display List • Vertices 或 pixels 資料可以存入 display list 中,供後續使用。 • Evaluator • 把 vertices 視為曲線或曲面的控制點,然後計算出真正位於曲線或曲面上的點。

  12. Per-vertex Operations • 對每一個 vertex 執行諸如幾何轉換、建立/轉換紋理座標、燈光計算等工作。 • Primitive Assembly • 執行剪裁(clipping)、投影、視埠轉換、深度值(depth)、截斷(culling)等計算。 • Pixel Operations • 像素經過 Scale, bias, mapping, clamping 等運算後,拷貝至 texture memory 或 frame buffer。 • Texture Assembly • 建立 texture 物件與其施行順序。Texture 物件可存在顯示卡的 texture memory 中,以加速 texture 的處理。

  13. Rasterization • 這個步驟把幾何資訊和像素資訊整合成 fragments。每一個 fragment 都對應至 frame buffer 中的相對像素,除了顏色外,也包含深度值資訊。 • Per-fragment Operations • 每一個 fragment 加上 texture 資料和雲霧效果設定,若通過 scissor test, alpha test, stencil test 和 depth-buffer test,則在施行 blending, dithering, logical operations, masking by a bitmask 等運算後,產生 frame buffer 中所對應的像素值。

  14. 主要參考資料 • 書籍: • OpenGL Programming Guide 5th Ed., Addison-Wesley 2006. • OpenGL Superbible4th Ed. • 網站: • http://www.opengl.org

More Related