游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2672|回复: 2

关于从OpenGL移植到DX,坐标系的问题

[复制链接]

19

主题

42

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2008-7-16 18:51:00 | 显示全部楼层 |阅读模式
我现在移植了一套OpenGL的游戏到DX,除了模型数据是用原来的,其他都东西都是用DX函数重写
但是因为GL用的是右手坐标系,我发现在DX下看到的物体全部都是反的,该在左边的在右边,该在右边的在左边,所以我就简单的把D3DXMatrixPerspectiveFovLH,D3DXMatrixLookAtLH换成D3DXMatrixPerspectiveFovRH,D3DXMatrixLookAtRH
但是问题出现了,游戏中用到DX数学函数的地方都出现了问题,旋转什么的都不对了
比如说D3DXMatrixRotationAxis,D3DXVec3TransformCoord,D3DXMatrixRotationZ
是不是我们还要把DX的变换矩阵也逆转成GL的变换矩阵?抛弃所有的DX数学函数?

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2008-7-16 19:46:00 | 显示全部楼层

Re:关于从OpenGL移植到DX,坐标系的问题

把模型里每个顶点的z坐标翻转一下好了,其余都用左手系的函数,貌似D3DX的数学库是基于左手系的。

2

主题

52

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2008-7-17 16:51:00 | 显示全部楼层

Re:关于从OpenGL移植到DX,坐标系的问题

D3DXMatrixRotationZ等函数生成的变换矩阵与左右手坐标系无关,比如绕Z轴旋转30度的矩阵,在左手坐标系和右手坐标系下的结果都是相同的。所不同的是左手坐标系与右手坐标系对旋转正方向的定义不同,正好相反。

从OpenGL移植到DX有两种方法:
1,使用D3DXMatrixPerspectiveFovRH和D3DXMatrixLookAtRH,修改三角形背面裁减为CW(默认为CCW)或者修改三角形顶点的顺序。
2,使用D3DXMatrixPerspectiveFovRH和D3DXMatrixLookAtLH,使用视点矩阵对世界空间的Z轴取反,即改变D3DXMatrixLookAtLH矩阵的_13,_23,_33,_43的符号。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 23:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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