坐标变换中出现的像素点位置偏离

在3D引擎开发中遇到一个坐标变换问题,导致屏幕右半边线条呈现锯齿状,经过调整源坐标x轴值加0.5后,问题得到解决。原本的坐标变换是从以屏幕左下角为原点,宽高为640x480的源坐标系,转换到以屏幕中心为原点,x轴范围为-1到1,y轴范围同样为-1到1的目标坐标系。变换算法在修正前导致了显示异常,修正后实现正常渲染。
摘要由CSDN通过智能技术生成

坐标变换中出现的像素点位置偏离

3d引擎中实现坐标系变换时,发现一个诡异问题,在屏幕右半边画出来的线有很明显的锯齿状,断断续续,而左半边没有问题,困扰多日。偶然间受到启发,把参与变换的x源坐标多加0.5,就一切正常了。


我的变换是这样:源坐标系以屏幕左下角为原点,屏幕宽高为(640,480),即x轴范围是0--639,y轴范围是0--479。目标坐标系以屏幕中心为原点,x轴范围是-1–1,y轴范围是-1–1。例如:需要把坐标(320,240)变换成(0,0)。


在没有加0.5前,变换算法是这样:

Vec2 v;
float w = s_screenSize.width / 2;
float h = s_screenSize.height / 2;
v.x = (x - w) / w;
v.y = (y - h) / h;
调试log如下:
源x 目标x
319
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值