2011-05-03 90 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