Hallo,
ich möchte eine Textur in einen DWORD speicher kopieren und den dann speichern.
(Genau das nichts anderes
)
Dazu habe ich folgenden Code, dieser bringt mir aber nur Nullen in den Speicher. Habe ich irgendwas übersehen?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// add texture to texture pool
m_nTextureID = CM3DTexturePool::getInstance()->Add(ts->Filename,ts->ColorKey,ts->fAlpha,
ts->pTexture,ts->bAlpha,ts->AlphaTexname,ts->fWidth,ts->fHeight,ts->bOrigSize);
// get texture pointer from texture pool
m_lpTexture = CM3DTexturePool::getInstance()->GetTextureStage(m_nTextureID)->pTextureElement[0]->pTexture;
POINT pt = CM3DTexturePool::getInstance()->GetTextureExt(m_nTextureID);
m_TextureContent._SizeX = pt.x;
m_TextureContent._SizeY = pt.y;
// lock texture and save content
D3DLOCKED_RECT LockedRect;
m_TextureContent._pContent = new DWORD[(m_TextureContent._SizeX*m_TextureContent._SizeY)];
if(m_lpTexture->LockRect(0,&LockedRect,NULL,D3DLOCK_NOSYSLOCK)!=S_OK)
return false;
memcpy(m_TextureContent._pContent,LockedRect.pBits,(m_TextureContent._SizeX*LockedRect.Pitch));
m_lpTexture->UnlockRect(0);
|