如何獲得texture紋理貼IDirect3DTexture9的實際大小
遺憾的是dx裏壹旦妳生成了IDirect3DTexture9對象之後,基本沒辦法獲得圖像原始大小了,比如使用GetLevelDesc獲得的是底層surface的大小,而surface的長寬都必然是2的n次方,大於或等於圖形原始大小,所以如果妳的圖形原來不是2的n次方,這個數是不準確的。還有壹種想法是獲取surface底層的dc,然後再獲得dc的bitmap。。。累死,而且可能和上壹種方法的結果壹樣(我沒試,猜想)。 設置頂點貼圖的時候,dx肯定是知道原始圖形大小的,要不然它沒發根據貼圖坐標來畫,但是好像我們外邊得不到。 那麽實際上這個數就只能在加載貼圖的時候保存下來了:1.如果妳是自己load,自己write到texture裏的話,這個不是問題。2.如果妳是用D3DXCreateTextureFromFile,或D3DXCreateTextureFromFileInMemory,那麽妳就沒有這個機會了。解決辦法是使用Ex版的create函數,D3DXCreateTextureFromFileEx或D3DXCreateTextureFromFileInMemoryEx,這兩個函數可以接收壹個D3DXIMAGE_INFO*類型的參數,函數成功執行後,該參數指向的D3DXIMAGE_INFO結構體被填充為正確的數據,其中的width和height就是正確的原始貼圖大小。 這個方法比較方便,或許還有別的方法,多多探討。