2011-02-28 23 views
1

我試圖在Delphi創建使用DirectX 9的紋理2007從位圖或圖形創建D3DX質地

我所知道的這些功能:

D3DXCreateTextureFromFile 
D3DXCreateTextureFromFileEx 
D3DXCreateTextureFromResource 
D3DXCreateTextureFromFileInMemory 

但我需要紋理是動態的(和快速)。有沒有從TBitmap創建紋理的功能?

更多信息:
我的最終目標是使用DirectX來顯示用戶選擇的視頻。對DirectX的需求是在視頻頂部疊加文本以及在用戶選擇下一個視頻時在視頻之間進行切換。我正在使用播放視頻的組件,併爲每個幀抽出一個位圖,這就是我想用於紋理的內容。

回答

0

您可以簡單地鎖定D3D texture,然後在TBitmap.Handle上使用GetDIBits

然而,您正在浪費大量的處理時間。鎖定紋理並直接將圖像加載到D3D紋理上會好得多。

雖然這意味着使用外部圖像加載lib。

您可能還會發現使用D3DXLoadSurfaceFromFile會顯着加快速度,因爲您不需要每次都創建紋理。只需抓住它的top-level surface並將紋理加載到它上面。

不管你做什麼,然而,從磁盤加載像這樣的單個幀將會很慢。硬盤加載將是最慢的部分。您可能會發現塊將一組幀加載到內存中,然後在每幀中使用D3DXLoadSurfaceFromFileInMemory,而將另一個幀的圖像塊異步加載到內存中是最快的方法。