2016-11-20 4 views
0

異なるテクスチャで異なるフォーマットでロードしようとしていますが、R、G、Bの値のみを持つ2つのフォーマットしか動作しません。 A1R5G5B5のようなフォーマットはまったく動作しないようです。一部のD3DFORMATをテクスチャに使用できません

私は、通常のD3D9テクスチャにこれらのフォーマットを追加しようとしています:

IDirect3DTexture9* texpage; 
D3DXCreateTexture(device, 512, 512, 1, D3DUSAGE_RENDERTARGET, group->format, D3DPOOL_DEFAULT, &texpage) 

をので、ストレートの質問に、どのような条件の作業これらのフォーマットを取得するために満たすために私が持っているのですか?

+0

Direct3Dデバイスは、レンダーターゲットとしてDirect3Dデバイスをサポートする必要があります。ほとんどのDirect3D 9時代のハードウェアはレンダリング用に '' D3DFMT_R5G6B5''をサポートしていました。 '' IDirect3D9 :: EnumAdapterModes''でサポートを確認する必要があります。より良い選択肢はDirect3D 11を代わりに使用し、[Direct3Dハードウェア機能レベル](https://msdn.microsoft.com/en-us/library/windows/desktop/mt186615.aspx)について学ぶことです。 –

+0

返事をありがとう、悲しいことに私はD3D9を使用することを余儀なくされています。これはすべてハードウェアに依存していますか?コードには何もありませんか?アルファは私にとって最も重要なものです、アルファ+ R5G5B5/R3G2B3または8以外のものは素晴らしいでしょう。私は間違いなくEnumAdapterModesをチェックアウトします – braffolk

+0

なぜあなたはD3D9を強制的に使用しますか? Windows XP Service Pack 3またはWindows Server 2003 SP1をサポートする必要がありますか? –

答えて

0

あなたはテクスチャを読み込もうとしているにもかかわらず、D3DUSAGE_RENDERTARGETフラグを使ってテクスチャを作成しようとしています。レンダリングターゲットは、一般に、サンプリングに使用されるテクスチャよりも互換性がはるかに低くなります。 A1R5G5B5 [戻る] [2]それはバックバッファ形式ですが、そのサポートは(明らかに)普遍的ではありません。実際、Direct3D9は特定の形式のサポートを保証していません。

この要件を削除すると互換性が向上しますが、すべてのデバイスでこの形式がサポートされるとは限りません。 IDirect3D9::CheckDeviceFormatを使用して互換性を確認できます。フォーマットがサポートされていない場合は、オフラインで読み込んでいるファイルをフォールバックとしてよりサポートされている形式に事前変換することをお勧めします(たとえば、A8R8G8B8がサポートされていないドライバは見られません)。

関連する問題