游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2171|回复: 0

透视投影矩阵

[复制链接]

42

主题

140

帖子

158

积分

注册会员

Rank: 2

积分
158
发表于 2008-12-31 23:44:00 | 显示全部楼层 |阅读模式
// This is C4E1v_transform from "The Cg Tutorial" (Addison-Wesley, ISBN
// 0321194969) by Randima Fernando and Mark J. Kilgard.  See page 97.

void C4E1v_transform(float4 position : POSITION,
                 out float4 oPosition : POSITION,
             uniform float4x4 modelViewProj)
{
  // Transform position from object space to clip space
  oPosition = mul(modelViewProj, position);
  oPosition = oPosition / oPosition.z;
  oPosition = oPosition / oPosition.w;

}
oPosition = oPosition / oPosition.w;和oPosition = oPosition / oPosition.z;效果是一样的,不要告诉我是因为视点空间的z就是投影矩阵的w.这我知道,这里的oPosition.z和oPosition.w都是经过变换后的顶点。 oPosition.w = -z 。oPosition.z = -z * Pz 。Pz 是其次裁剪空间中的Z值。因为他们(x,y,z)同时除以了一个实数,相对不变。所以结果正确,但是数学上这样是错误的。不知道我的理解正不正确?  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 14:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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