OpenGL建立渲染階段

2021-09-06 19:57:22 字數 1067 閱讀 3395

opengl是一種基於客戶/伺服器和管道(pipeline)的圖形庫。即乙個應用程式(客戶)將各種命令和資料寫入管道,這命令和資料將被暫時儲存起來,圖形庫(伺服器)直到收到一條專門的指令才會開始處理它們,並將處理結果通過管道傳給使用者。

所以opengl應用程式的基本結構就是:

1、建立管道;2根據需要向管道中寫入資料和指令;3、關閉管道。

管道就是opengl著色環境——(opengl render context)簡稱rc。因此建立管道實際上就是獲取乙個可用的rc。

windows系統

windows的gdi系統中進行圖形顯示是通過圖形裝置上下文——(device context)簡稱dc——進行的。所以獲取rc就是:

①先獲取乙個dc,

②調整這個dc的象素格式(pixelformat)以便opengl庫進行繪製,

③用dc去呼叫wglcreatecontext(hdc)建立乙個rc,

④呼叫wglmakecurrent(hrc,hdc)將剛才建立的rc指定為當前的rc。

當乙個rc不再使用時就可以刪除它,方法是:

使rc不是「當前rc」:

wglmakecurrent(hdc,null); //不再有當前rc

wgldeletecontent(hrc); //刪除之

注意幾點:

2.設定dc點陣圖格式等於設定了相應的視窗的點陣圖格式,並且dc和視窗的點陣圖格式一旦確定就不能再改變。這一點只能期望以後的windows版本改進了。 

3.乙個rc雖然可以更換dc,在任何時刻只能利用乙個dc(這個dc稱為rc的當前dc),但由於乙個視窗可以讓多個dc作圖從而可以讓多個執行緒利用多個rc在該視窗上執行opengl操作。 

4.現在的windows下的opengl版本對opengl和gdi在同乙個dc上作圖有一定的限制。當使用雙快取用opengl產生動畫時,不能使用gdi函式向該dc作圖。

5.不建議用ansic在windows下編寫opengl程式。這樣的程式雖然具有跨平台的可移植性(比如很多sgi的例子程式),但是它們不能利用 windows作業系統的很多特性,實用價值不大。 

opengl渲染管線

學習著色器,並理解著色器的工作機制,就要對opengl的固定功能管線有深入的了解。首先要知道幾個opengl的術語 渲染 rendering 計算機根據模型 model 建立影象的過程。模型 model 根據幾何圖元建立的物體 object 幾何圖元 包括點 直線和多邊形等,它是通過頂點 verte...

OpenGL渲染流程

管線這個術語描述了opengl渲染的整個過程。opengl採用cs模型 c是cpu,s是gpu,c給s的輸入是vertex資訊和texture資訊,s的輸出是顯示器上顯示的影象。下面這2個圖比較清楚的講解了opengl的渲染管線。相信沒有opengl基礎的應該看不懂,下面會簡單的介紹這個流程,再看下...

opengl渲染管線理論

opengl 渲染管線理論 這幾天稍微看了一些關於glsl的頂點著色以及片元著色的一些相關知識.目前來講還有乙個著色器則是geometry shader.我的顯示卡用不了這個功能.當然有點遺憾 在看了一些之後,大概了解了一些關於opengl渲染管線的知識.看了這個之後對於opengl的學習我想應當是...