[程式] 请教一个关于2D透明贴图的问题

楼主: xtxml (赤木巧☠)   2014-10-13 12:39:11
工作之余做一点小练习,想写一个简单的2D graphic engine,不过碰上一点问题如下。
A和B的构造如下图,A包含了A1和A2,A2盖在A1上。
然后我想做的效果是 A * 0.5(alpha)之后盖到B上面。
http://i.imgur.com/T322qyt.png
这边如果只是简单地把A1 * 0.5(alpha)、 A2 * 0.5(alpha),贴到B上面,
会出现不想出现的效果如左图,但实际上我想呈现的是右边的效果。
http://i.imgur.com/ZQ0hJak.png
右边当初我是使用RTT(render to texture)的方式完成,
不过只要有一个这类的物件就要多一次这样的步骤,使用到大量的draw call,
物件一多之后速度变慢得蛮严重的。
想请问一下各位先进,类似的问题有没有效能比较好的方式可以解决呢?
(如果可以的话,给个关键字也会对我帮助很大,
因为这个问题不知道该怎么描述,连google都很难找orz)
感谢:)
作者: cowbaying (是在靠北喔)   2014-10-13 12:53:00
怎么我看两边一样...
作者: azureblaze (AzureBlaze)   2014-10-13 12:57:00
他的图很失败只是示意而已没照颜色画XD如果可以控制顺序用depth/stencil buffer可以控制他要的是http://i.imgur.com/o3AnsIR.png
楼主: xtxml (赤木巧☠)   2014-10-13 13:08:00
抱歉我的示意图很糟,请看文字的部分
作者: azureblaze (AzureBlaze)   2014-10-13 13:24:00
你可以画蓝色时同时画stencil,这样红色就画不上去
楼主: xtxml (赤木巧☠)   2014-10-13 13:35:00
就这个例子的话可以,但很多层"A"叠在一起的话该怎么做呢?
作者: cowbaying (是在靠北喔)   2014-10-13 15:21:00
引擎等级的话...我记得要先看你调色盘的形式我是都用RGB 比较好理解
作者: KanoLoa (卡)   2014-10-13 16:40:00
我自己手刻的时候都先算好全部颜色再画...
作者: cowbaying (是在靠北喔)   2014-10-13 16:42:00
楼上 不是本来就该先在BUFFER里算好再画吗? XDDD
楼主: xtxml (赤木巧☠)   2014-10-13 16:44:00
如果这个问题没有一个通用的解法,那也只能放弃了Q.Q
作者: cowbaying (是在靠北喔)   2014-10-13 16:46:00
我觉得你可以去看一下OPENGL的SHADER跟BUFFER
作者: KanoLoa (卡)   2014-10-13 16:47:00
小的无知,如果不是用叠的,那效能问题是出在?
楼主: xtxml (赤木巧☠)   2014-10-13 16:48:00
看过不少shader范例,但是始终没有看到解决类似问题的orz我自己测起来,瓶颈是卡在draw call、RTT切换贴图的次数
作者: cowbaying (是在靠北喔)   2014-10-13 16:55:00
基本上 不管你叠多少层东西 只会产生一次draw call看样子你是一张图call了4次所以结果才会错误从AZ的图看的出来左边的紫色是红+蓝造成的不过怎么感觉我好像离题了...看看depthmask是否符合你要的
楼主: xtxml (赤木巧☠)   2014-10-13 18:05:00
嗯嗯,我在看看好了,感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com