HLSL中如何把输入映射到输出像素


    当使用PS来进行2D图像处理的时候,实际上仍然在做3D成像。我们渲染多边形直接和屏幕对齐,然后覆盖在屏幕上。我们直接把2D Pixel Shader应用到这个表面上。

    最常用的方法是用一个简单的与屏幕对齐的矩形(两个三角形)来覆盖屏幕。如果定义了一个3D单位大小的正方形,所有的点在x和y轴范围从-n到n(n一般取0.5或1.0),而z坐标为0。然后用下面的代码将它与屏幕对齐。注意在D3D中,纹理坐标位于每个纹元的中心,而不是以一个角为中心。这个微小的偏移很少能够被肉眼看到。但是,如果想要合成多个成像过程的结果,这就会产生很多问题。每个过程如果没有对准,将会偏移半个纹理元素,这有时是令人讨厌的。

        OutVS.Pos  =  float4(2n * (InVS.Tex.x - n/2) - n / imgWidth,  -2n * (InVS.Tex.y - n/2) + n / imgHeight, 0, 1);

    其中,imgWidth, imgHeight——纹理的宽度和高度(如256×256、512×512等)。另外注意,D3D中的纹理坐标的y轴是以向下为正的,这与屏幕上的对应的图像的y轴方向正好相反。

    我的BLOG:http://blog.csdn.net/skyman_2001,MSN:skyman_2001@163.com。欢迎交流!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值