ページ 1 / 1
D3DXCreateTextureFromFileExのサイズ指定について
Posted: 2014年2月04日(火) 20:02
by hiokun46
こんにちは。
DirectXで3D表示のゲームを作ろうとしています。
ポリゴンに貼り付けるテクスチャのサイズは2の累乗でなくてはならないと聞いたことがあります。
D3DXCreateTextureFromFileExという関数は画像のサイズを指定できますが2の累乗じゃなくても問題ないでしょうか?
100X100のbmpでもグラボに関係なく大丈夫でしょうか?
Re: D3DXCreateTextureFromFileExのサイズ指定について
Posted: 2014年2月04日(火) 21:17
by みけCAT
D3DXCreateTextureFromFileEx
この値が 0 または D3DX_DEFAULT の場合、寸法はファイルから取得され、2 の累乗に丸められます。デバイスが 2 の累乗でないテクスチャーをサポートし D3DX_DEFAULT_NONPOW2 が指定されている場合、サイズの丸めは行われません。
(Width,Heightについて)
この記述から、2の累乗でないテクスチャーをサポートしないデバイスが存在することが予想されます。
Re: D3DXCreateTextureFromFileExのサイズ指定について
Posted: 2014年2月05日(水) 00:52
by ISLe
いまどきのグラボはたいてい2の累乗でないサイズのテクスチャをサポートしていますが、ミップマップをサポートするテクスチャはたぶん2の累乗でなければいけないはずです。
2の累乗でないサイズのテクスチャをうまく作成できないときはミップマップレベルに1を指定するとうまくいくことがあります。
ちなみに2の累乗でないサイズのテクスチャはさまざまな点で効率が悪いです。
ピクセルをデバイス上で完全に一致させる必要がある場合などに用途を限定すべきかと思います。
Re: D3DXCreateTextureFromFileExのサイズ指定について
Posted: 2014年2月05日(水) 23:11
by hirokun46
ありがとうございます。
グラボの互換性を考えると2の累乗にした方がよいことは分かりました。
例えば1024X1024の大き目の画像データを指定して、
その画像の座標のx=400,y=500,width=100,height=100のように座標とサイズをテクスチャとして指定することは出来ますか?
D3DXCreateTextureFromFileExでは出来ないと思うのですが、そういったことが出来る関数がありましたら教えてください。
Re: D3DXCreateTextureFromFileExのサイズ指定について
Posted: 2014年2月06日(木) 00:26
by ISLe
質問の意図がよく分かりませんが、テクスチャはテクスチャ座標を指定して貼り付けるのがふつうです。
テクスチャをピクセル単位で考えるとコードで分岐処理しなければいけないことがたくさん増えてめんどうくさいですよ。