游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: krist

关于2d引擎的3d加速的困惑

[复制链接]

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-8-19 16:59:00 | 显示全部楼层

Re: Re: Re: Re: Re: Re:关于2d引擎的3d加速的困惑

Civilian: Re: Re: Re: Re: Re:关于2d引擎的3d加速的困惑


还请您详细介绍,因为我没有用过vs
看来这是一个可行的方法

首先呢,请不要称呼我为'您',我的年龄还没到那个份上,听不习惯 [em10]
关于2d显示其实很简单,只要搞清楚原理就很容易了.
所谓光栅化前的几何变换,在d3d中无非世界变换,视变换,与投影变换.换句话说,送到光栅化操作的顶点都会认为是在投影空间内的坐标,投影变换后的坐标(x',y',z',w)与屏幕空间坐标对应关系是:
Screen_PositionX = ((x'/w)*0.5+0.5)*Screen_Width;
Screen_PositionY = (0.5-(y'/w)*0.5)*Screen_Height;
掌握这个原则就可以容易得出屏幕上任意一个点的齐次坐标(x,y,z,w)表示。对应到vs中,就不需要经过其他变换,直接把这个值输出到oPos中就可以将其设定到屏幕上的对应位置了。然后在像素流水线中设置相应的纹理等等操作(可以用FFP,也可以用PS)
这种方法可以使用硬件几何变换能力,比如要进行旋转,则得到旋转矩阵,用D3DX辅助函数得到对于z轴的旋转矩阵,转制后将其前两行输入vs的常量寄存器。然后在vs中用两条dp3就可以完成旋转。缩放,平移之类操作也可以类似完成。其余的类似alpha混合等效果可以用VS,结合像素流水线操作与frame buffer blend完成。

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2004-8-19 17:09:00 | 显示全部楼层

Re:关于2d引擎的3d加速的困惑

请问,你有没有测试过,这种方法比固定管线快多少?(数值上)
alpha混合,方面比固定管线快多少?
我觉得你的方法固然可行,但是我想,固定管线的内部转换应该也是原理相似.
固定管线应该有一种方法可以避免频繁锁定显寸.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-17 08:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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