RC與DC的介紹與使用

2021-07-24 11:49:52 字數 2258 閱讀 9540

opengl的繪圖方式與windows一般的繪圖方式是不同的。主要區別如下:

1、windows採用的是gdi繪圖

2、opengl採用的是渲染描述表rc繪圖。

3、opengl使用的是特殊的畫素格式。

在windows中使用gdi繪圖時必須指定在哪個裝置環境dc中繪製,同同樣的在使用opengl函式時也必須指定乙個所謂的渲染環境。正如dc要儲存gdi的繪製環境資訊如筆,刷和字型等,rc也必須儲存opengl所需的渲染資訊如畫素格式等。

渲染環境主要由以下六個wgl函式來管理:

1、hglrc wglcreatecontext( hdc hdc )

該函式用來建立乙個opengl可用的渲染環境。hdc必須是乙個合法的支援至少16位色的螢幕裝置描述表dc或記憶體裝置描述表的控制代碼。該函式在呼叫前,裝置描述表必須設定好適當的畫素格式。成功建立渲染描述表之後,hdc可以釋放或刪除。函式返回null值表示失敗,否則返回值為渲染上下文的控制代碼。

2、bool wgldeletecontex( hglrc hglrc )

該函式刪除乙個rc,一般應用程式在刪除rc之前,應使它成為非現行rc,不過,刪除乙個現行rc也是可以得。此時,opengl系統沖掉等待的繪圖命令並使之成為非現行rc,後刪除之。注意:刪除乙個屬於別的執行緒的rc時會導致失敗。

3、hglrc wglgetcurrentcontext( void )

該函式返回執行緒的現行rc,如果執行緒無現行rc則返回null

4、hdc wglgetcurrentdc( void )

該函式返回與執行緒現行rc關聯的dc,如果執行緒無現行rc則返回null。

5、bool wglmakecurrent( hdc hdc, hglrc hglrc )

該函式把hdc和hglrc關聯起來,並使hglrc成為呼叫執行緒的現行rc,如果傳給hglrc的值為null,則函式解除關聯,並置執行緒的現行rc為非現行rc,測試忽略hdc引數。

注意:傳給該函式的hdc可以不是呼叫wglcreatecontext時使用的值,但是,他們所關聯的裝置必須相同並且擁有相同的畫素格式。乙個rc可以由幾個現行rc,這是針對呼叫執行緒而言的。乙個執行緒在擁有現行rc進行繪圖時,別的現場將無法同時繪圖。乙個執行緒一次只能擁有乙個現行的rc,但是可以擁有多個rc;乙個rc也可以由多個執行緒共享,但是他每次只能在乙個執行緒中試現行rc。在使用rc時,不應該釋放或者刪除與之關聯的dc。如果應用程式在整個生命期內保持乙個現行rc,則應用程式也一直占有乙個dc資源。windows系統只有有限的dc資源。

管理rc與dc兩種方法

2、rc在程式開始時建立並使之成為現行rc。它將保持為現行rc直至程式結束。相應的,getdc在程式開始呼叫,releasedc在程式結束時才呼叫。此中方法的好處是在相應wm_paint訊息時,無需呼叫十分耗時的wglmakecurrent函式。一般它要消耗幾千個時鐘週期。

rc與dc的關係

在windows下,使用gdi(圖形裝置介面)開發應用程式時,首先需要獲得乙個device context(裝置描述表,簡稱dc),然後才能在這個dc下完成繪圖工作,這一過程就類似於現實生活中紙和筆的關係,dc就是紙,而象刷子、畫筆這樣 的gdi物件就是筆。從windows內部執行機制來分析,dc應該理解為狀態保持器,就是它可以而且必須儲存當前系統的狀態,這些狀態包括:當前的畫 筆、刷子等gdi的具體型別(顏色、粗細等),當前的調色盤型別以及系統的其他資訊。當使用者開始在dc上進行繪製工作時,系統就會先檢視dc中相應的當前 狀態值,然後利用這些狀態值進行圖形繪製,假如希望改變當前狀態值,那麼可以通過selectobject這樣的win32函式來將指定的狀態或者對 象選入dc即可。實際上基於opengl的應用程式也是這樣的,只是這裡不是直接在dc上進行繪製工作,而是通過render context(渲染描述表或者繪製描述表,簡稱為rc)這樣乙個橋梁在dc上進行繪製工作,對於程式來說實際上可以理解為就是在rc上繪製圖形。另外只 要rc不被釋放(有效),那麼就可以進行繪製工作;相比之下,dc卻需要不斷的建立和釋放。所以要使用opengl圖形庫進行圖形應用開發,首先要獲得rc,然後要將其設定為」當前rc」,最後後面所有的繪製工作都是在」當前rc」下面進行的,直到」當前rc」無效為止。

管理dc與rc的兩種方法:

法一

法二

DC和RC的簡單介紹

dc 在windows下,使用gdi 圖形裝置介面 開發應用程式時,首先需要獲得乙個device context 裝置描述表,簡稱dc 然後才能在這個dc下完成繪圖工作,這一過程就類似於現實生活中紙和筆的關係,dc就是紙,而象刷子 畫筆這樣 的gdi物件就是筆 採用什麼樣的刷子和筆,或者什麼顏色都是...

AD與DC的概念!

1 把網路中眾多的物件 被稱之為ad物件 計算機,使用者,使用者組,印表機,共享資料夾.分門別類,井然有序地放在乙個大倉庫中,並做好檢索資訊,以便查詢,管理和使用這些物件 資源 這個有層次結構的資料庫,就是活動目錄資料庫,簡稱ad庫。2 我們把存放所有活動目錄資料庫的計算機就稱之為域控制器 doma...

D C與快速排序

d c的意思是分而治之,它是一種著名的遞迴式問題解決方法。使用d c來解決問題的過程包括兩個步驟 1 找出基線條件,這種條件必須盡可能簡單 2 不斷將問題分解 或者說縮小規模 直到符合基線條件 求列表 2,4,6 的和 1 找出基線條件。列表中不包含元素 2 縮小問題規模。將求列表 2,4,6 的和...