我正在使用DirectX9,現在我遇到了紋理創建問題。 我使用的功能CreateTexture和LoadSurfaceFromMemory與D3DFMT_DXT1壓縮,我檢查了我的顯卡和D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL關閉,我想這意味着我的顯卡都支持非權力的兩個紋理...我的設備帽可以使用任何尺寸的紋理。 我的問題是最紋理的運作良好(和它們的大小不是2功率),但在某些情況下不工作,像「1228 X 453」,如果我調整爲「1228 X 452的」紋理效果很好。 發生了什麼事?DirectX9和不兼容的紋理尺寸
對不起,我的英文! 謝謝。
+1。 [證明](http://msdn.microsoft.com/en-us/library/windows/desktop/bb172558%28v=vs.85%29.aspx):'運行時將不允許應用程序使用創建表面一個DXTn格式除非表面尺寸是4的倍數。這適用於屏幕外表面滑動,渲染目標,2D紋理,立方體紋理和體積textures.' – Drop
呀!你是對的,因爲紋理壓縮我必須將紋理轉換成4 感謝的倍數!我現在儲存了大量的記憶。 –
這可能是有點偏離上下文爲非功率的兩個紋理大多爲圖形用戶界面,但不要忘記,如果紋理是在3D網格用於生成的mipmap鏈。性能(內存帶寬)和質量(混疊和雲紋)非常重要。 – galop1n