1.16.2009

DirectDraw : EnumAttachedSurface

HRESULT EnumAttachedSurfaces(
LPVOID lpContext,
LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback
);

這個 function 很有趣。

在 create surface 時,可以指定 BackBufferCount,也就是說,同時有 N 個 surface attach 在這個 surface 上。

這樣 create 出來的 surface 就會有 N 個 surface attach 在後面。


所以要是有什麼動作是要對所有的 surface 一起動作的,就要一個一個的把 attached surface 叫出來,一個一個作。
這樣很麻煩,所以提供這一個 function。

EnumAttachedSurfaces 的參數有一個是 callback function,就是說,有幾個 attached surface 就會 call 這個 callback function 幾次,同時在 call 的時候,還會把那個 attached surface 的 pointer傳進去。

這樣,只要把動作寫成 callback function,再用 EnumAttachedSurface( ) apply 到所有的surface 就 OK囉。



? 很奇怪的是... 好像不會自動 call 所有的 surface,要自己手動 一直 call... sample code 是在 callback function 中又 call EnumAttachedSurface( ) ,造成 recursive,所以 call back function 要自己決定 停止 的時機 !!!!!!

沒有留言: