最近学习用d3d下的ID3DXSprite进行2D游戏的编程。发现一个问题,不知道是不是ID3DXSporite的bug,创建资源用的图像文件太大的话(我用的png 格式) ,然后进行Draw出来,会出现问题。贴一下代码
if(FAILED(D3DXCreateTextureFromFileEx( lpdevice,
"Panel3.png",
4906,
128,
1,
D3DPOOL_DEFAULT,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DCOLOR_XRGB(255,0,255),
NULL,
NULL,
&lptexture)))

Panel3.png 是4906×128,
下面是Panel5.png,大小是 730×260
if(FAILED(D3DXCreateTextureFromFileEx( lpdevice,
"Panel5.png",
730,
260,
1,
D3DPOOL_DEFAULT,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DCOLOR_XRGB(255,0,255),
NULL,
NULL,
&lptexture)))

最后把相同的rect通过下面函数Draw出来
RECT rect;
SetRect(&rect,0,0,180,128);
lpsprite ->Draw(lptexture,&rect,NULL,NULL,D3DCOLOR_ARGB(255,255,255,255));
显示的东西会不一样,大文件Panel3.png 画出来的东西是x方向的两个0,0,360,128,小一点的文件是正常的,画出来的是0 0 180,128。
不知道是不是bug,还是我程序的问题,不过在网上找了个其他人的例子,更改一下文件,也是这样的错误。不过貌似也不会有那么大的做精灵的图片文件。