DX9纹理映射

可恶的纹理偏移,一直困惑的事情。最后还是得要试验靠实践出真知:

问题:
当把1024×1024大小的贴图,通过纹理矩阵变换,取出来其中的一部分区域。
然后通过标准QUAD将其绘制到到800×600的表面(backbuffer)。
这里的纹理偏移值该是何值才能保证结果绝对正确毫无偏移。

以StretchRect的结果为准,经过反复试验。得到uv坐标的偏移值应该是:

 0.5 / Size(backbuffer) * Size(经过纹理矩阵转换后的纹理坐标范围)

总结如下:

通过D3D9文档知,偏差是0.5个像素(而不是纹素)。
所以关键在于,这0.5个像素对应的纹理的尺寸是多少。
总的纹理尺寸(即变换后的纹理坐标范围)/ 绘制表面的尺寸:是每一个像素对应的纹理尺寸。
再乘以0.5即为所求。

目标缓冲区的尺寸如果和纹理尺寸相同,纹理偏移量=0.5/宽或高;
顶点也必须偏移0.5的值,不能出现(0,0)的坐标,否则正交投影的计算会出错。

转载于:https://my.oschina.net/u/3773235/blog/1612645

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值