DirectDraw 需要 CreateSurface( ),Surface 就是一塊memory。這塊memory 最終 可以用來指定輸出到 lcd 上。
所以可以 create 很多個 surface,然後分別指定顯示到 lcd這個 Surface memory 是從 Display Driver 的 Heap 中 alloc 的。
這一塊 Display Driver 的記憶體一般稱為 FrameBufferHeap,或是 VideoMemoryHeap。
這塊記憶體是要和 graphic hardware 加速器合作。所以會有一些限制。
例如,要是一塊連續的記憶體,還有,要在 phyiscal memory address 的特殊位置。
但是,管理這一塊 MemoryHeap,卻是 WindowsCE OS 做的。
在 Display Driver 的生成,就要 new 一個 SurfaceHeap( ) 物件。
DisplayHeap = new SurfaceHeap(HeapSize,Start address,NULL,NULL);
在生成函式中,告知heap的 start address 和 heap size。
這塊 surfaceheap memory,會在 config.bib 中預留下來。
沒有留言:
張貼留言