游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1695|回复: 2

ID3DXSprite::Draw的position问题?

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-3-9 17:18:00 | 显示全部楼层 |阅读模式
大家好,我是学习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结果就对了,请知道的朋友讲解一下。
谢谢了。

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-9 17:44:00 | 显示全部楼层

Re:ID3DXSprite::Draw的position问题?

x是int
-0.5相当于-1……懂了吧?

最好不要用int赋给D3DXVector3……

0

主题

45

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-3-9 18:13:00 | 显示全部楼层

Re:ID3DXSprite::Draw的position问题?

浮点运算误差
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 16:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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