游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10875|回复: 32

以D3D为基础的2D编程

[复制链接]

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-10-11 13:19:00 | 显示全部楼层 |阅读模式
最近研究了一下用D3D9来实现2D,总结了一下,主要有3种方法:
(1)创建一个四边形来作为图片的载体(表面)。
(2)使用SPRITE和Texture。
(3)使用D3D9提供的Surface接口。

不知道还有没有其他的方法,欢迎讨论!

谁有关于第3种方法的文章,详细一点的,不胜感谢!

[em16]

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-10-11 13:38:00 | 显示全部楼层

Re:以D3D为基础的2D编程

用D3D的Surface还不如用DDraw呢

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2005-10-11 14:41:00 | 显示全部楼层

Re:以D3D为基础的2D编程

Surface的用法和DDraw的确实很相似。
我一般用第二中方法。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
 楼主| 发表于 2005-10-11 16:33:00 | 显示全部楼层

Re:以D3D为基础的2D编程

第二种方法我也实践过,但是感觉显示出来的图片大小和原始图片大小有一定的偏差,是不是我的程序的问题?

kyo1984兄能不能详细讲解一下第二种方法?谢谢!

对于第三种方法,我还没有实践过,比较好奇而已!

3

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2005-10-11 17:49:00 | 显示全部楼层

Re: 以D3D为基础的2D编程

纹理大小不对,是因为纹理的大小非2D的n次方,被D3D拉伸了,
举个例,一个100 x 100的纹理,会被拉伸成为128 x 128的纹理

3

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2005-10-11 17:53:00 | 显示全部楼层

Re: 以D3D为基础的2D编程

另外,我使用第一个方法,优点是速度快且灵活,尤其是有很多个这种4个顶点的矩形的时候,把顶点数据组织起来,只用lock一次buffer,所有的矩形一起渲染,速度上比第二种方法很有优势的。

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-10-11 18:12:00 | 显示全部楼层

Re:以D3D为基础的2D编程

关注中
俺一直在第一和第二种方法之间徘徊,各位大虾能详细说说这两种方法的优缺点么

3

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2005-10-11 19:18:00 | 显示全部楼层

Re: 以D3D为基础的2D编程

第一种方法,要麻烦些(但是不难),代码量多,把所有的数据组织到一个Buffer里面,要细心些。只用Lcok和unLock一次buffer,一次绘完。 适合比较大的项目对速度有很高要求的情况下使用。

第二种方法,代码简单,但是速度就不敢恭维了(这也是代码简单的原因)。Sprite适合写个DEMO什么的使用,大型项目的话,基本就不用考虑了。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-10-11 20:01:00 | 显示全部楼层

Re:以D3D为基础的2D编程

第二种做非2^n图片要scale回去,,麻烦一点点

第三种要方便多了可以直接做2^n,,只是只能做做COPY

第一种一般是你不想用D3DX才做的

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2005-10-11 20:09:00 | 显示全部楼层

Re:以D3D为基础的2D编程

KeenBlue阁下说的很对,我也是觉得第一种方法效率高些,只是感觉麻烦点,所以最近用D3D做2D的方面用了SPRITE.不过写点小程序,SPRITE足够了。
第一种方法还有个好处是实现一些效果,在速度上比第二种方法高。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 09:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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