簡體   English   中英

DirectX9任意大小的紋理(非2 ^ n)

[英]DirectX9 Texture of arbitrary size (non 2^n)

我是DirectX的新手,必須在現有的C ++ DX9應用程序上工作。 該應用程序會跟蹤相機圖像並顯示一些DirectDraw(即2d)內容。 相機的縱橫比始終為4:3,屏幕不確定。

我要加載紋理並將該紋理用作遮罩,因此僅在紋理的遮罩區域內完成內容的跟蹤和顯示。 因此,我想加載與相機圖像大小完全相同的紋理。

我已經完成所有步驟來加載紋理,但是當我調用GetDesc()時, D3DSURFACE_DESC結構的WidthHeight字段具有下一個更大的2的冪數。 我不在乎用於紋理的實際內存是否已針對圖形卡進行了優化,但是我沒有找到任何方法來獲取硬盤上原始圖像文件的尺寸。

我做了(並且做了,但是沒有成功)搜索是否可以將圖像僅加載到計算機RAM中(不需要圖形卡),而沒有在代碼中添加新的依賴項。 否則,我將不得不使用OpenCV(在跟蹤方面總會是個好主意),但此刻我仍在嘗試避免包括OpenCV。

謝謝您的提示,諾伯特

D3DXCreateTextureFromFileEx ,參數3和4為

D3DX_DEFAULT_NONPOW2.

之后,您可以使用

D3DSURFACE_DESC Desc;
m_Sprite->GetLevelDesc(0, &Desc);

獲取高度和寬度。

D3DXGetImageInfoFromFile可能就是您想要的。

我假設您正在使用D3DX,因為我認為Direct3D不會自動調整任何紋理的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM