从内存directx创建纹理

时间:2013-02-08 02:35:57

标签: directx directx-9

我有一个指向内存中的loacation的指针,其中包含我的像素信息。 我想在屏幕上使用纹理或任何其他形式显示它。是否可以在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);

然后在i中通过绘制矩形基元来渲染它 如果我通过D3DXSaveTextureToFile()将纹理保存到BMP文件然后使用D3DXCreateTextureFromFile()创建纹理,那么在setTexture之前。然后我得到预期的输出

1 个答案:

答案 0 :(得分:4)

D3DXCreateTextureFromFileInMemory(doc)如果它是内存中的图像文件。

但是,如果只有颜色数据只是使用D3DXCreateTexture(doc)创建纹理,请将其锁定并手动将数据写入纹理。