|
|
大家好,我是学习directx9的新手。
我在学习使用ID3DXSprite: raw做2D的绘图程序时,发现了一个奇怪的问题,不知道原因,特此向大家请教。
我有4副64X64的图片,组成一个256X64的位图文件,想把它平铺到整个屏幕上,也就是类似棋盘的效果。
主要代码如下:
D3DXCreateTextureFromFileEx(pd3dDevice, L"tiles.tga", 256, 64, 0, 0, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_DEFAULT, 0, 0xFFffffff, NULL, NULL, &ppTextureMap);
rect.left = 0; rect.top = 0; rect.right = 64; rect.bottom = 64;
for(x=0; x<10; x+=1.0)
for(y=0; y<10; y+=1.0)
g_pTextSprite->Draw(ppTextureMap, &rect, NULL, &D3DXVECTOR3(x*64, y*64, 0.0f), 0xffffffff);
本意是希望图片能够无缝的平铺在一起,但显示结果2列图片之间却有一条竖线是背景色的,不知道哪里不对。
后来,我看SDK例子里面Simple2D的代码,改了一句话,显示结果就是无缝平铺了。
g_pTextSprite->Draw(ppTextureMap, &rect, NULL, &D3DXVECTOR3(x*64-0.5, y*64-0.5, 0.0f), 0xffffffff);
但我不知道为什么减0.5结果就对了,请知道的朋友讲解一下。
谢谢了。
|
|