1

ケース1
テクスチャを作成する

    D3DXCreateTexture(device, width, height, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)

テクスチャを白い色に更新します。

    D3DLOCKED_RECT lr;
    HRESULT hr = texture->LockRect(0, &lr, NULL, 0);
    ConvertRGB2RGBA(width, height, pixels, stride, (unsigned char*)(lr.pBits), lr.Pitch);
    texture->UnlockRect(0);

レンダリング結果は次のように表示されます。

ここに画像の説明を入力してください 私が欲しいのは表面が真っ白です。

すべての頂点のz値は0.0fに等しくなります。

ケース2
テクスチャを作成する場合

    D3DXCreateTextureFromFile(device, "e:\\test.bmp",  &texture);

テクスチャを更新しないでください、それは絶対に正しいことを示しています。

ケース3ケース2
としてファイルからテクスチャを作成し、ケース1としてテクスチャを更新すると、結果が正しくなくなり、test.bmpコンテンツがわずかに残ります。

結論:
テクスチャの更新に何か問題があるはずです。どうしたの???


解決しました!!!
レベルパラメータを1に変更すると、機能します。

    D3DXCreateTexture(device, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)
4

2 に答える 2

0

おめでとう。D3DXCreateTexture のミップマップ レベル引数が 0 に設定されている場合、完全なミップマップ テクスチャが作成されます。ミップマップを使用する場合、関数 ConvertRGB2RGBA はトップ レベルのテクスチャだけでなく、下位レベルのテクスチャもカバーする必要があります。

于 2012-09-13T13:03:23.540 に答える
0

レベル パラメータを 1 に変更すると、機能します。

D3DXCreateTexture(device, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)
于 2012-09-19T09:13:36.227 に答える