[程式] 請教一個關於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