游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5557|回复: 18

高手们来介绍一下提高D3D速度的方法啊

[复制链接]

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-6-1 14:03:00 | 显示全部楼层 |阅读模式
请高手们介绍点提高 Sprite 2D 绘图速度的方法吧

我正在用 Sprite 重写我的《仿传奇单机版》,目前正在重写地图编辑器,但桢数不太令人满意。地图的可视范围:15*14,每个地图格的大小为:48*32像素。在画上地表和满屏的植物后,桢数掉到40多桢,这样应用到游戏引擎中去的话,恐怕只能达到刚刚好的程度。
另外经测试发现写不写 Sprite.Begin 和 Sprite.End 对速度基本没什么影响。
对了,程序是窗口下的。

请高手指点啊

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-1 17:46:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

你这个程序的问题就是典型的Low Batch Size瓶颈,每个物体的顶点数太少,绘制次数又过多,这样的话会造成很多重复操作,比如顶点/纹理数据的频繁提交切换,渲染、纹理层状态的频繁切换等,其实GPU大部分时间都没有在工作,而是在Wait总线和CPU
有一个最方便的解决方法,就是用Geometry Instancing,DX9c中新增的实例渲染,专门用来处理Low Batch Size绘制的效率问题,不过它对显卡要求非常高,一般是要支持SM3.0的才可以,用它来搞这种2D游戏有点杀鸡用牛刀的感觉了。。。
你可以试试把地表整合到一个多网格Mesh中,一次DrawPrimitive绘制完,地面的植物层也可以用类似的办法,总之就是让调用DrawPrimitive的次数尽量少,每次绘制的格子数尽量多,帧数自然就上来了

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-6-1 18:31:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

首先感谢楼上兄弟的回答,但你能不能说明白点啊?
我学 D3D Sprite 才2天啊,我用的是DX8.1的 D3D

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-6-1 19:14:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

D3DXSprite效率是很低的。除非自己用VertexBuffer模拟。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2006-6-1 19:25:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

将纹理并在一起后一次性绘制。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-6-2 04:55:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

nocture说得是正解,我得图形引擎也是通过VertexBuffer做的,我当时用500个带Alpha混合和Pixel Shader的帧动画对象测试,占用50%的CPU测试结果有50FPS。
如果你需要我可以公布相关代码,不过是vb.net+d3d9c apr 2005。不过我想原理应该是一样的。

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-6-2 08:57:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

速度问题通过使用Surface8拼图的方法已经解决(FPS飙到100多,那个高兴啊),这样只用 Sprite 处理需要旋转和半透明效果的贴图就好了。但是问题又来了,怎么给Surface8设置 ColorKey ? 在LoadSurfaceFromFile 读入图象的时候可以设置一个,但是不管用啊,还望指点,很急。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-2 11:37:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

总觉得ColorKey是GDI和DDRAW的遗毒……改用Alpha测试吧

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-6-3 07:07:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

对,别用colorkey那玩意儿,用Alpha通道做出来漂亮的多

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-6-3 11:03:00 | 显示全部楼层

Re:高手们来介绍一下提高D3D速度的方法啊

大虾们,能不能说说具体方法啊?我刚学菜的很啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-12 22:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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