Simone
云澹澹,水悠悠,一声横笛锁空楼
posts - 42,  comments - 70,  trackbacks - 1
     当使用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轴方向正好相反。

---------------------------------------------------
Author: Skyman (吴俊)
版权所有,未经允许,不得转载
---------------------------------------------------
posted on 2007-07-05 12:55 Skyman 阅读(155) 评论(0)  编辑 收藏 所属分类: GPU

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-07-06 12:50 编辑过
 
另存  打印
 


EMail:
jun.skyman2001'at'gmail.com
MSN:
skyman_2001@163.com

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

与我联系

常用链接

留言簿(2)

我参与的团队

我的标签

随笔分类

随笔档案

相册

Friends

  • LongGi
  • 一个搞Linux上的OGL的同志

搜索

  •  

最新评论

阅读排行榜

评论排行榜