游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5367|回复: 16

对于同一个纹理,把所有顶点集中起来渲染能提升多少效率

[复制链接]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-5-17 23:37:00 | 显示全部楼层 |阅读模式
假如10个精灵都使用同一张纹理图片,一般的做法是调用10次DrawPrimitiveUp(),而如果把顶点集中起来,则只需要调用1次DrawPrimitiveUp().
这看起来好像效率更高,但我测试发现,我渲染5000个图片,调用5000次DrawPrimitiveUp(),和只调用1次DrawPrimitiveUp()的帧率几乎相等...我不知道是不是D3D内部做了什么优化?对于同一个纹理可以保证只被渲染一次?

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2011-5-18 12:24:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

肯定有差别,你拿个差点的卡试试,区别就出来了。

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2011-5-18 12:25:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

写图形程序有时候不要用太好的显卡,太好的显卡一般的程序无法探测出他的瓶颈所在。

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-5-18 13:14:00 | 显示全部楼层

Re: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多

Devil: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少效率?有没必要?

写图形程序有时候不要用太好的显卡,太好的显卡一般的程序无法探测出他的瓶颈所在。


恩,差异应该会有,不过我测试的台式机显卡也不高,是GeForce 8500GT,(我甚至打算弄一台低端集显笔记本,如HP6220)
看来应该是将这种集中渲染的方式应用到所有纹理?
(总之不可能区别对待,即有的纹理集中顶点渲染,而有的纹理却多次渲染,因为这样就无法处理各种遮挡关系了)

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-5-18 13:55:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

本来显卡在批次上就有瓶颈,不过调用次数不多的话不太明显。另外DrawPrimitiveUp相当于动态缓冲,每调用一次都会把内存中的数据拷贝到内部的动态缓冲里,合到一起就只用拷贝一次了。

9

主题

132

帖子

145

积分

注册会员

Rank: 2

积分
145
QQ
发表于 2011-5-18 14:29:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

   批次是cpu端的瓶颈, 可以下nv的batch batch batch论文。
   1批次和5000批次会差不多。。。 神马情况啊。
   我编辑器跑500和2000那要差100多帧。

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-5-18 14:40:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

楼上说的对,订正一下

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-5-18 18:56:00 | 显示全部楼层

Re: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多

wsz317sky: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少效率?有没必要?

   批次是cpu端的瓶颈, 可以下nv的batch batch batch论文。
   1批次和5000批次会差不多。。。 神马情况啊。
   我编辑器跑500和2000那要差100多帧。


我是用AIT 64M显存的笔记本测试的,测试两种情况,一种是调用5000次DrawPrimitiveUP(),另一种是定义5000个顶点数据,然后一次性执行DrawPrimitiveUP(),结果帧率都在11帧左右。不过同样的代码,我拿到台式机,即8500GT的显卡上跑,就能看到差异,一个是10帧以下,一个是40多帧。

恩,不过这么一说,我倒是倾向于把顶点集中起来渲染了。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2011-5-18 19:21:00 | 显示全部楼层

Re: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多

wsz317sky: Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少效率?有没必要?

   批次是cpu端的瓶颈

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2011-5-19 11:26:00 | 显示全部楼层

Re:对于同一个纹理,把所有顶点集中起来渲染能提升多少

没有实用价值啊.
一般我们是设置一个材质,再画一个矩形.
你一次性画出许多的矩形,那都是用相同的材质吧.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 06:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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