游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 轩辕崇正

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

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2011-5-31 17:52:00 | 显示全部楼层

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

非半透明打开zwrite和ztest,按近至远画,半透明关闭zwrite按远至近画就可以了

至于要不要批量,见仁见智的事,PC上无所谓,换个手机PSP什么的你再来看看

100

主题

224

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2011-6-2 13:22:00 | 显示全部楼层

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

先排序生成z值
然后再收集批量渲染
上述只适合用alphatest
而半透明情况则需另外处理

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2011-6-4 10:12:00 | 显示全部楼层

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

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



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


3D World中把 2D物件?橐??3D空?的平板..Z值就有作用了 就能用z-buff?碜鲆恍┦

除了需要?alpha blend的??D方式 需要做排序 由?往近?


1.收集排序不需要?AlphaBlend的 只有去背的可以放??
   收集相同批次 如果硬?有支援?
   ?然?近遮?蹴?序不是很重要..在低?的硬? 由近而??效率比?高

2.排序需AlphaBlend 就是透明混色?算
      由?而近?出  

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2011-6-5 10:49:00 | 显示全部楼层

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

哥们,这问题干吗不问我?我可以解答啊~
同学们,楼主的意思是,用一个比较大的VERTEX BUFFER,里面保存一组四边形的顶点

只要一次DRAW PRIMITIVE,就能画出很多个四边形

他想问,怎么决定这些图形的遮挡顺序?

我的解答是,在VB里越靠前的四边形越先画,这意味着前面的会被后面的遮挡…

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2011-6-5 10:51:00 | 显示全部楼层

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

唉!哥们死板的没救了,表达又不好,又自负

3

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2011-6-13 13:55:00 | 显示全部楼层

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

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



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


你灵活运用的话就能在2d里用z-buffer,因为实际上都是3d.只是表现形式是2d.

以前就有个国产2d游戏在2d图片中另存一个w通道,这样不仅解决了排序的问题,还解决了你说的问题.

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2011-6-15 13:44:00 | 显示全部楼层

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

用XYZTHW的顶点绘制 3D其实就是投影矩阵让产生模型由近到远产生大小变化,如果这个变化没了,那么看起来就没了3D的感觉,所以Z缓冲开启,根据遮挡顺序设置好对应的Z值,不管是先绘制出来还是后绘制出来,因为有了Z检测,所以遮挡顺序就被正确表现出来,这样批量渲染是没问题的.批量渲染处理一般的UI是够了的,不过在做一些特殊处理的UI,比如要用到shader,而这个shader又比较特殊的时候,就不适用了.比如之前有利用alpha值拿来做不规则进度条的做法,就没法批次渲染这些UI.

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2011-6-15 15:17:00 | 显示全部楼层

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

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

用XYZTHW的顶点绘制 3D其实就是投影矩阵让产生模型由近到远产生大小变化,如果这个变化没了,那么看起来就没了...


小弟真不知道Z值怎么用,请问所谓的Z缓冲就是如下的这个z值么?


  1. struct SVertex2D
  2. {
  3.         float x, y, z, rhw;                // 位置
  4.         unsigned long color;        // 颜色
  5.         float tu, tv;                        // 纹理坐标
  6. };
复制代码

Z缓冲的使用方法,是不是就两步,1:开启Z缓冲,2:就是填好这个Z值? [em24]

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2011-6-16 18:18:00 | 显示全部楼层

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

如果是alpha blend,可以用premultiplied alpha,这个可以无视顺序的。

http://home.comcast.net/~tom_forsyth/blog.wiki.html#[[Premultiplied%20alpha]]

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2011-6-16 18:18:00 | 显示全部楼层

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

如果是alpha blend,可以用premultiplied alpha,这个可以无视顺序的。

http://home.comcast.net/~tom_forsyth/blog.wiki.html#[[Premultiplied%20alpha]]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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