游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8519|回复: 20

批量渲染直接把精灵遮挡给扼杀了。

[复制链接]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2011-5-30 01:05:00 | 显示全部楼层 |阅读模式
举个最简单的例子:
假如纹理A要画3个纹理区域(分别是a,b,c),纹理B也要画3个纹理区域(分别是d,e,f)
那么批量渲染的情况下,要么先画纹理A的所有区域,要么先画纹理B的所有区域,不可能出现交叉渲染,比如先画a,再画e,再画b,再画f, 因为批量渲染的特点就是每个纹理只绘制一次,

看来批量渲染的使用情况并不宽泛,游戏中绝大多数地方都需要遮挡,包括GUI.不过像物品栏里的道具图标倒不需要处理遮挡,这些还是可以批量渲染的.
另外一些雨雪天气效果也可以用批量渲染,
总结:只有不需要考虑遮挡的,才能使用批量渲染.

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2011-5-30 12:20:00 | 显示全部楼层

Re:批量渲染直接把精灵遮挡给扼杀了。

?σ话  
考?]下Z Buff使用 可以增?批量使用

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

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

Re: Re:批量渲染直接把精灵遮挡给扼杀了。

Aming: Re:批量渲染直接把精灵遮挡给扼杀了。

?σ话  
考?]下Z Buff使用 可以增?批量使用


z-buffer 是处理3d物体深度信息的技术,位数越高则代表它能够提供的景深值就越精确,3d图象渲染质量越高。
不适用于2D。

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
发表于 2011-5-30 17:37:00 | 显示全部楼层

Re:批量渲染直接把精灵遮挡给扼杀了。

没搞明白老兄想要表达的意思……
是说批量渲染会因深度缓冲的影响出现遮挡次序混乱吗?

1

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2011-5-30 17:37:00 | 显示全部楼层

Re:批量渲染直接把精灵遮挡给扼杀了。

真是死板得没救了...

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2011-5-30 17:54:00 | 显示全部楼层

Re:批量渲染直接把精灵遮挡给扼杀了。

批量渲染的时候,你是反复渲染同一个材质啊.
就算速度快,也是没有意义啊.
游戏中渲染的图片本来就是各不一样啊.

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

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

Re: Re:批量渲染直接把精灵遮挡给扼杀了。

思月行云: Re:批量渲染直接把精灵遮挡给扼杀了。

没搞明白老兄想要表达的意思……
是说批量渲染会因深度缓冲的影响出现遮挡次序混乱吗?


渲染2D一般都关闭Z缓存,这一点CEGUI也是这么做的,虽然它使用了坐标变换。
Z缓存是用来处理3D顶点的,而我绘制的2D则不存在坐标变换,而是直接写屏

我举的例子,没看明白?
再解释一下:
假如纹理A要画3个纹理坐标区域(分别是a,b,c),纹理B也要画3个纹理坐标区域(分别是d,e,f)
如果是批量渲染,则要么先绘制纹理A,要么先绘制纹理B,这就使得a b c和d e f无法交叉起来渲染。

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
发表于 2011-5-30 21:11:00 | 显示全部楼层

Re:批量渲染直接把精灵遮挡给扼杀了。

排个序不就得了?

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
发表于 2011-5-31 12:10:00 | 显示全部楼层

Re: Re: Re:批量渲染直接把精灵遮挡给扼杀了。

轩辕崇正: Re: Re:批量渲染直接把精灵遮挡给扼杀了。
渲染2D一般都关闭Z缓存,这一点CEGUI也是这么做的,虽然它使用了坐标变换。
Z缓存是用来处理3D顶点的,...

汗~终于绕明白了~
老兄的这个思想只能重启深度缓冲了……
用排序的方法都没救了…… [em17]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

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

Re: Re: Re: Re:批量渲染直接把精灵遮挡给扼杀了。

思月行云: Re: Re: Re:批量渲染直接把精灵遮挡给扼杀了。


汗~终于绕明白了~
老兄的这个思想只能重启深度缓冲了……
用排序的方法都没救了…… [em17]


Z缓存恐怕没办法做2D,而且我并不熟悉这个东西。
我暂时是批量渲染和非批量混着使用,开始以为不能这样,后来发现可以,
比如如下一个渲染顺序:
1:渲染纹理A
   ·纹理坐标a的顶点
   ·纹理坐标b的顶点
   ·纹理坐标c的顶点
2:渲染纹理B
   ·纹理坐标e的顶点
3:渲染纹理A
   ·纹理坐标b的顶点
4:渲染纹理B
   ·纹理坐标f的顶点
5:渲染纹理A
   ·纹理坐标c的顶点
……

这就是交叉渲染了,而实际上由于2D游戏中到处都需要处理遮挡关系,使得批量渲染的情况并不多,所以一般都是非批量渲染。这样一来的话,其实并没有获得多少批量渲染带来的性能优势,反而是更加消耗了性能,即需要维护这些顶点数据表,其中涉及查找和拷贝,说到这,我倒想彻底废除批量渲染功能了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 12:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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