140 likes | 422 Views
Introduction to OpenGL (1). 靜宜大學資工系 蔡奇偉 副教授 2001-2010. 大綱. OpenGL 是什麼? 簡史 程式庫 命名規則 繪圖架構 主要參考資料. OpenGL 是什麼?. OpenGL 是一套 2D/3D 的繪圖 API ( Application Program Interface ),其中包含了約 250 個函式。透過這些函式,我們可以利用繪圖卡的 2D/3D 硬體加速功能,免去 CPU 用於繪圖的負擔,因而提高系統整體的繪圖效率。
E N D
Introduction to OpenGL (1) 靜宜大學資工系 蔡奇偉 副教授 2001-2010
大綱 • OpenGL 是什麼? • 簡史 • 程式庫 • 命名規則 • 繪圖架構 • 主要參考資料
OpenGL 是什麼? OpenGL 是一套 2D/3D 的繪圖 API(Application Program Interface),其中包含了約 250 個函式。透過這些函式,我們可以利用繪圖卡的 2D/3D 硬體加速功能,免去 CPU 用於繪圖的負擔,因而提高系統整體的繪圖效率。 OpenGL 是一套跨平台的繪圖函式庫,因此使用 OpenGL 的繪圖程式具有高度的可攜性(即可以很容易地把程式移植到不同的電腦系統中)。 然而,OpenGL 並不包含處理視窗與人機介面的函式,這些功能得靠所使用的視窗系統來支援。
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
命名規則 • OpenGL • 通常以 GL 或 gl 開頭 • GLU • 以 glu 開頭 • GLUT • 以 glut 開頭
OpenGL Software Rasterizer Application Program OS Services I/O Services GDI OpenGL Software Rasterizer Display Device GDI: Graphics Device Interface
OpenGL Hardware Rasterizer Application Program OS Services I/O Services GDI OpenGL Display Device Hardware Driver GDI : Graphic Device Interface
OpenGL Hybrid Rasterizer Application Program OS Services I/O Services GDI OpenGL Software Rasterizer Display Device Hardware Driver
Vertex Data • OpenGL 處理的幾何模型都是由 vertices 組合而成。 • Pixel Data • 圖片或紋理貼圖(texture)是由像素所組成。 • Display List • Vertices 或 pixels 資料可以存入 display list 中,供後續使用。 • Evaluator • 把 vertices 視為曲線或曲面的控制點,然後計算出真正位於曲線或曲面上的點。
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 的處理。
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 中所對應的像素值。
主要參考資料 • 書籍: • OpenGL Programming Guide 5th Ed., Addison-Wesley 2006. • OpenGL Superbible4th Ed. • 網站: • http://www.opengl.org