1

DirectX9 を使用していますが、テクスチャの作成に問題があります。関数 CreateTexture と LoadSurfaceFromMemory を D3DFMT_DXT1 圧縮で使用しています。グラフィック カードのデバイス キャップを確認しましたが、D3DPTEXTURECAPS_POW2 と D3DPTEXTURECAPS_NONPOW2CONDITIONAL がオフになっています。これは、グラフィック カードが NON Power of Two Textures をサポートしていることを意味すると思います...任意のサイズのテクスチャを使用します。私の問題は、ほとんどのテクスチャがうまく機能していることです (そして、それらのサイズは 2 のべき乗ではありません) が、テクスチャのサイズを「1228 x 452」に変更すると、「1228 x 453」のように機能しない場合があります。うまく機能します。どうしたの?

私の英語でごめんなさい!ありがとう。

4

2 に答える 2

1

BCn テクスチャ フォーマットはブロック ベースです。ブロックはピクセルを 4x4 要素のグループにパックするため、これらの形式ではテクスチャの寸法を 4 に揃える必要があります。

于 2013-10-16T15:34:33.780 に答える
0

残念ながら、これはグラフィック カードの問題です。カードが 2 のべき乗以外のテクスチャのサポートを主張している場合でも、サポートはしばしばバグがあるか、制限されています。

テクスチャをパディングしてサブテクスチャを使用することもできますが、最良の方法はテクスチャ アトラスを構築することです (一般的には、メモリ帯域幅を節約するためにとにかくこれを行う必要があります)。

于 2013-10-16T13:39:18.883 に答える