从内存directx创建纹理

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

我有一个指向内存中包含像素信息的位置的指针。 我想使用纹理或任何其他形式在屏幕上显示。是否可以从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);
D3DLOCKED\u RECT r;
HRESULT-hr;
DWORD c0=D3DCOLOR_ARGB(255,0,0),c1=D3DCOLOR_ARGB(255255);
DWORD*pData,
图像[64]={c0,c0,c0,c1,c0,c0,c0,c0,
c0,c0,c0,c1,c0,c0,c0,c0,c0,
c0,c0,c0,c1,c0,c0,c0,c0,c0,
c1,c1,c1,c1,c1,c1,c1,c1,c1,c0,
c0,c0,c0,c1,c0,c0,c0,c0,c0,
c0,c0,c0,c1,c0,c0,c0,c0,c0,
c0,c0,c0,c1,c0,c0,c0,c0,c0,
c0,c0,c0,c0,c0,c0,c0,c0,c0,c0};
如果(m_pDevice->CreateTexture(8,8,1,D3dAge_DYNAMIC,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&m_pPointTexture,NULL)!=D3D_OK)
返回false;
如果(m_pPointTexture->LockRect(0,&r,NULL,D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE)!=D3D_OK)
返回false;

对于(int y=0;yD3DXCreateTextureFromFileInMemory(),如果它是内存中的图像文件


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

我尝试过这样做,但结果显示为空白黑屏,其中我使用D3DXSaveTextureToFile()将创建的纹理写入bmp文件然后使用D3DXCreateTextureFromFile()将创建的BMP加载到纹理中我得到了预期的输出。
D3DLOCK\u NOOVERWRITE
只能用于顶点缓冲区,不能用于纹理。
D3DLOCK\u DISCARD
足够了。你必须用
UnlockRect
解锁纹理。除此之外,我看不到其他问题。哦,是的。我使用了unlockRect也忘了提到这一点。现在改为D3DLOCK_DISCARD,但仍然存在相同的问题。如果你能给我一个如何从内存创建/渲染纹理的示例,那将对我有很大帮助。