4

ピクセル情報を含むメモリ内の場所へのポインタがあります。テクスチャまたはその他のフォームを使用してこれを画面に表示したいのですが、directx 9のメモリからテクスチャを作成することはできますか?ありがとう

これがコードサンプルです

D3DLOCKED_RECT r;
HRESULT hr;
DWORD c0=D3DCOLOR_ARGB(255,0,0,0), c1=D3DCOLOR_ARGB(255,255,255,255);
DWORD *pData, 
Image[64]={c0,c0,c0,c1,c0,c0,c0,c0,
   c0,c0,c0,c1,c0,c0,c0,c0,
   c0,c0,c0,c1,c0,c0,c0,c0,
       c1,c1,c1,c1,c1,c1,c1,c0,
       c0,c0,c0,c1,c0,c0,c0,c0,
   c0,c0,c0,c1,c0,c0,c0,c0,
   c0,c0,c0,c1,c0,c0,c0,c0,
   c0,c0,c0,c0,c0,c0,c0,c0};
if (m_pDevice->CreateTexture(8,8,1,D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,   &m_pPointTexture,NULL)!=D3D_OK)
    return false;
if (m_pPointTexture->LockRect(0,&r,NULL, D3DLOCK_DISCARD |D3DLOCK_NOOVERWRITE)!=D3D_OK)
    return false;
for (int y=0; y<8; y++)
{
 pData=(DWORD*)((BYTE*)r.pBits + r.Pitch);
 for (int x=0; x<8; x++)
 pData[x]=Image[y*8+x];
}
m_pDevice->SetTexture(0,m_pPointTexture);

次に、長方形プリミティブを描画してレンダリングします。ここでsetTextureの前に、D3DXSaveTextureToFile()でテクスチャをBMPファイルに保存し、D3DXCreateTextureFromFile()を使用してテクスチャを作成します。次に、期待される出力を取得します

4

1 に答える 1

5

D3DXCreateTextureFromFileInMemory ( doc ) (メモリ内のイメージ ファイルの場合)。

ただし、カラー データのみの場合は、D3DXCreateTexture ( doc ) でテクスチャを作成し、ロックしてデータを手動でテクスチャに書き込みます。

于 2013-02-08T09:35:32.190 に答える