D3D使用Sprite制作2D界面的一个问题(关于改变窗口大小后Sprite的Draw尺寸发生了变化)

solomonlxd 2008-08-25 05:12:10
创建了D3DDevice之后,不改变窗口大小的时候下面的代码可以按图片原尺寸绘制,可是改变了窗口大小后绘制尺寸就变了,如何避免这个问题?


m_lpD3DDevice->BeginScene();
m_lpSprite->Begin(D3DXSPRITE_ALPHABLEND);

D3DXMATRIX scaleMatrix;
D3DXMATRIX transMatrix;

D3DXMatrixScaling(&scaleMatrix, 1.0f, 1.0f, 0.0f); //无缩放
D3DXMatrixTranslation(&transMatrix, (float)x, (float)y, 0.0f); //位移(x,y)
D3DXMatrixMultiply(&transMatrix, &scaleMatrix, &transMatrix);
m_lpSprite->SetTransform(&transMatrix);

m_lpSprite->Draw(pTexture,NULL,NULL,NULL,D3DCOLOR_ARGB(nAlpha,255,255,255));

m_lpSprite->End();
m_lpD3DDevice->EndScene();
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordliuyang 2009-04-17
  • 打赏
  • 举报
回复
楼上正解
solomonlxd 2008-08-26
  • 打赏
  • 举报
回复
Reset之前只需要销毁Sprite即可,Texture等不需要销毁,这样就没那么麻烦了,就此结帖好了
solomonlxd 2008-08-25
  • 打赏
  • 举报
回复
找到一个办法,OnSize的时候销毁所有此Device创建的资源包括Sprite,Reset Device之后重新创建这些资源,经测试确实可行,但是真的需要这么麻烦吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧