2011-05-03 108 views
1

我想混合兩個rects,但我只想繪製混合區域(該區域爲rects相交的),怎麼辦呢OpenGl的融合

+0

讓自己註冊用戶。你將有更多的答案:-) – 2011-05-15 02:10:16

回答

1

如果你不想計算交集,你可以使用模板緩衝來實現。在這裏讀到它:
http://bluevoid.com/opengl/sig00/advanced00/notes/node118.html

可以繪製兩個矩形,並與模板緩衝增量,然後掩蓋只有具有值> 2,像素即其中2個或更多rects繪製的像素。

+0

我不認爲這是可能的,或者我可能沒有完全理解模板緩衝區是如何工作的,我有一個大頂點數組,裏面有所有的矩形,我不能一一繪製它們,因爲它們有很多,它很慢。我需要更深入地洞察:) – ZZZ 2011-05-05 11:56:46

0

兩個凸rects的交集始終是一個矩形。那麼爲什麼不計算交叉點並只畫出那個?

+0

只有它們是軸對齊的;) – ChrisF 2011-05-03 22:50:18

+0

右對。我的錯。 – shoosh 2011-05-03 22:52:12

+0

嗯,它們是axix對齊,但計算這些交叉點可能會很慢,我有大約400 rects和1ghz蜂鳥。 – ZZZ 2011-05-05 11:58:40

0
GLES20.glEnable(GLES20.GL_BLEND); 
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); 

但是你應該設置你的混合函數的行爲。 而在着色器中,我設置了Alpha通道。你可以看到結果:

blending post。 Android項目的source