OpenGL是過程式的而非描述性的圖形API。開發人員只須規定必要的步驟去實現顯示的效果。這些步驟包含了許多OpenGL的命令。這些命令用於繪制許多的幾何圖元,例如點,線,多邊形。OpenGL支持光照和陰影,紋理映射,混合,透明效果,動畫,還有許多特殊的效果。
通用實現是指軟件實現,軟件實現的好處是跨硬件。但是性能不佳,沒有硬件加速。
軟件通用實現的OpenGL API所處的位置如下圖:
其首先用軟件實現去光柵化繪制3D圖像,然後傳給GDI,GDI負責與顯示設備交互顯示圖像。
OpenGL API調用直接傳給硬件驅動。硬件驅動不會把圖形傳給Windows GDI進行顯示。而是直接與圖形顯示設備交互。
管線是用於描述一系列的處理流程。下圖是一個簡化版本的圖形管線
一個應用程序調用了許多OpenGL的API,這些命令被傳送到Commond Buffer
這個buffer填充著許多命令,頂點數據,紋理數據等等,當緩沖區的數據被刷新時,命令和數據就被傳遞給管線的下一階段。
頂點數據首先會進行變換和光照。這個階段完成之後,數據被傳輸到管線的光柵化部分。最後圖像被放入到幀緩沖區。
早期的OpenGL硬件加速器只是對光柵化階段進行了加速。然而現在的硬件加速器都提供了變換和光照階段。
OpenGL編程指南(原書第7版)中文掃描版PDF 下載 http://www.linuxidc.com/Linux/2012-08/67925.htm
OpenGL 渲染篇 http://www.linuxidc.com/Linux/2011-10/45756.htm
Ubuntu 13.04 安裝 OpenGL http://www.linuxidc.com/Linux/2013-05/84815.htm
OpenGL三維球體數據生成與繪制【附源碼】 http://www.linuxidc.com/Linux/2013-04/83235.htm
Ubuntu下OpenGL編程基礎解析 http://www.linuxidc.com/Linux/2013-03/81675.htm
如何在Ubuntu使用eclipse for c++配置OpenGL http://www.linuxidc.com/Linux/2012-11/74191.htm
更多《OpenGL超級寶典學習筆記》相關知識 見 http://www.linuxidc.com/search.aspx?where=nkey&keyword=34581