afTexture.cpp
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:1k
源码类别:

其他游戏

开发平台:

Visual C++

  1. #include "afTexture.h"
  2. #include "afLog.h"
  3. afTexture::afTexture() : d3dTexture(NULL)
  4. {
  5. width = height = 0;
  6. format = afImage::UNKNOWN;
  7. name = "noname";    
  8. lockLevel = -1;
  9. }
  10. afTexture::afTexture(const afString& nName, LPDIRECT3DTEXTURE9 nD3DTex,
  11.  int nWidth, int nHeight, afImage::FORMAT nFormat) : d3dTexture(nD3DTex)
  12. {
  13. name = nName;
  14. width = nWidth;
  15. height = nHeight;
  16. format = nFormat;
  17. lockLevel = -1;
  18. }
  19. bool afTexture::isCompressed() const
  20. {
  21. return afImage::isCompressed(format);
  22. }
  23. bool afTexture::getData(unsigned char*& nData, int& nPitch, int nLevel, bool nReadOnly)
  24. {
  25. if(!d3dTexture || lockLevel>=0)
  26. return false;
  27. D3DLOCKED_RECT lockedRect;
  28. if(d3dTexture->LockRect(nLevel, &lockedRect, NULL, nReadOnly ? D3DLOCK_READONLY : 0) != D3D_OK)
  29. return false;
  30. nData = (unsigned char*)lockedRect.pBits;
  31. nPitch = lockedRect.Pitch;
  32. lockLevel = nLevel;
  33. return true;
  34. }
  35. void afTexture::releaseData()
  36. {
  37. if(lockLevel<0)
  38. return;
  39. d3dTexture->UnlockRect(lockLevel);
  40. lockLevel = -1;
  41. }