游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2421|回复: 5

DX中齐次除法执行的时机?

[复制链接]

8

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2007-5-9 17:38:00 | 显示全部楼层 |阅读模式
DX中是在投影空间中执行除以W,然后在视口映射到屏幕坐标
还是视口变换后在除以W得到屏幕坐标?

0

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-5-10 10:51:00 | 显示全部楼层

Re:DX中齐次除法执行的时机?

老生常谈的问题。在坐标经过投射矩阵之后,生成所谓的裁减坐标(Clip coordinates),然后再进入一个所谓的透视除法处理(Perspective Division),即用w成分去除xyz成分,生成所谓的设备坐标,在DX的官方文档并没详说这些,另外我认为透视变换的描述十分费解,你最好去阅读OpenGL的官方文档(www.opengl.org),里面也讲到了如何变换顶点的法线。设备坐标得到之后,然后进行视口变换生成了窗口坐标。在固定管线中,OpenGL的坐标处理与D3D原理相同,但实现稍有差别,如深度缓冲中存储的内容不太一样,视口变换也有些不一样。这些原理明白了之后,你就知道怎样进行透视投射和平行投射了。

8

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2007-5-10 12:45:00 | 显示全部楼层

Re:DX中齐次除法执行的时机?

我一直以为是先执行齐次除法,被投影到投影平面上的点被缩放到-1到1之间,然后再根据viewport的变换把坐标映射成正在的屏幕坐标,和你说的设备坐标得到之后,然后进行视口变换生成了窗口坐标一样,但是DX的文档说应用了viewport变换后 After this matrix is applied, vertices are still homogeneous - that is, they still exist as [x,y,z,w] vertices - and they must be converted to non-homogeneous coordinates before being sent to the rasterizer.所以我不知道DX的执行顺序到底是什么

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-5-10 13:43:00 | 显示全部楼层

Re:DX中齐次除法执行的时机?

理论上来说是先进行坐标齐次除法,dx 的顺序的确是如 sdk 所说,应该是出于性能上的考虑,在viewport 变换之后再进行除法操作。

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2007-5-10 17:25:00 | 显示全部楼层

Re:DX中齐次除法执行的时机?

sure after viewport,you can take a test by a sample demo

35

主题

161

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2007-5-20 20:49:00 | 显示全部楼层

Re:DX中齐次除法执行的时机?

DX内部会把投影和视口变换用一个统一的矩阵处理吧?我猜
所以必须在视口变换后再进行4D->3D
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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