Jan 13, 2008

dc & surface

之前一直以為對GDI相當熟悉,直到最近要解決新的問題才發現有些觀念錯得離譜。為了釐清dc, surface, gdi, overlay mixer之間的關係,雖然沒查到夠清楚的資料,不過也算有進展了。從開始寫win32程式,就一直以為dc像塊畫布(canvas),仔細看過msdn後才發現不是這麼回事:

A device context is a structure that defines a set of graphic objects and their associated attributes, as well as the graphic modes that affect output.

與其說是塊畫布,還不如說是一堆繪圖工具,而真正的畫布是output。在函式庫的層級上來說,d3d與gdi其實是同一層的,都是device independence而且output一樣(這是我猜的,沒看到文件明確的這麼寫),不一樣的是d3d可以有硬體支援,這當然也是d3d吸引人的地方。而這個output,似乎就是個surface,也因此overlay mixer 與 d3d 並存是可行的,但有個部份我一直無法解釋,為什麼OM與d3d都在同一個window上時,有時video 一定會蓋掉d3d,不過可以確定的是OM是整個render 的最後一步。

No comments: