游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1943|回复: 1

请高手看下,动态修改LPDIRECT3DTEXTURE9 纹理数据问题!!!

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-7-23 17:38:00 | 显示全部楼层 |阅读模式
楼主发表于:2010-07-22 14:23:33void CD3DImageRendering::ChangeTexturue(HBITMAP hBitmap)
{

BITMAP bmp;
GetObject(hBitmap, sizeof(BITMAP), &bmp);

DWORD uFHSize = sizeof(BITMAPFILEHEADER); // 文件头的字节
DWORD uIHSize = sizeof(BITMAPINFOHEADER); // 文件信息字节
DWORD uBmpSize = uFHSize + uIHSize + (bmp.bmWidthBytes) * (bmp.bmHeight);// 整个BMP文件字节

// 文件信息
BITMAPINFOHEADER bi;
ZeroMemory(&bi,sizeof(BITMAPINFOHEADER));
bi.biSize = uIHSize;   
bi.biWidth = bmp.bmWidth;   
bi.biHeight = bmp.bmHeight;   
bi.biPlanes = 1;   
bi.biBitCount = bmp.bmBitsPixel;   
bi.biCompression = BI_RGB;   
bi.biSizeImage = 0;   
bi.biXPelsPerMeter = 0;   
bi.biYPelsPerMeter = 0;   
bi.biClrImportant = 0;   
bi.biClrUsed = 0;  

// 文件头
BITMAPFILEHEADER bmfHdr;
ZeroMemory(&bmfHdr,sizeof(BITMAPFILEHEADER));
bmfHdr.bfType = 0x4D42; // "BM"   
bmfHdr.bfSize = uBmpSize;   
bmfHdr.bfReserved1 = 0;   
bmfHdr.bfReserved2 = 0;   
bmfHdr.bfOffBits = uFHSize + uIHSize;  

BYTE *buffer = new BYTE[uBmpSize];
memcpy( buffer, &bmfHdr, uFHSize);
memcpy( &buffer[uFHSize], &bi, uIHSize);
memcpy( &buffer[uFHSize + uIHSize],bmp.bmBits, (uBmpSize - uFHSize - uIHSize));

  // 这里创建是正确的
  //LPDIRECT3DTEXTURE9 pTexture = NULL;
  //D3DXCreateTextureFromFileInMemory(g_pd3dDevice, buffer, uBmpSize, &pTexture);

   
  /// 下面动态改变纹理数据 ,不正确,请问是什么原因?
D3DSURFACE_DESC Desc;
  m_pTextrue->GetLevelDesc(0, &Desc);

D3DLOCKED_RECT lockedRect;
if(SUCCEEDED(m_pTextrue->LockRect(0, &lockedRect, NULL, D3DLOCK_DISCARD )))
{
DWORD* imageData = (DWORD*)lockedRect.pBits;   
for(int i=0;i<Desc.Height;i++)
{
for (int j=0;j<Desc.Width;j++)
{

  int index = i * (lockedRect.Pitch /4) + j;
  imageData[index] = buffer[index];

}
}

m_pTextrue->UnlockRect(0);
}

}

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2010-7-26 21:04:00 | 显示全部楼层

Re:请高手看下,动态修改LPDIRECT3DTEXTURE9 纹理数据问题!!

“不正确”具体是什么不正确呢?
而且,似乎你的那两行被注释之后,pTexture没有实体化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 06:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表