OpenGl 混合

发布于 2024-11-04 13:29:20 字数 40 浏览 5 评论 0原文

我想混合两个矩形,但我只想绘制混合区域(矩形相交的区域),该怎么做

i want to blend two rects, but i want to draw only blended area (area where rects are intersecting), How to do it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哑剧 2024-11-11 13:29:20

如果您不想计算交集,您可以使用模板缓冲区来实现。在这里阅读:
http://bluevoid.com/opengl/sig00/advanced00/notes/node118.html

您可以在模板缓冲区上以增量绘制两个矩形 和 ,然后仅屏蔽具有值 > 的像素。 2,即绘制2个或更多矩形的像素。

If you don't want to compute the intersection you can probably use the stencil buffer to achieve that. read about it here:
http://bluevoid.com/opengl/sig00/advanced00/notes/node118.html

You can draw the two rects and with increment on the stencil buffer and then mask only the pixels that have value > 2, i.e. the pixels where 2 or more rects were drawn.

霊感 2024-11-11 13:29:20

两个凸矩形的交集始终是一个矩形。那么为什么不只计算交集并只绘制交集呢?

The intersection of two convex rects is always a rect. so why not just compute the intersection and draw only the that?

九歌凝 2024-11-11 13:29:20
GLES20.glEnable( GLES20.GL_BLEND );
GLES20.glBlendFunc( GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA );

但是您应该自己设置混合函数的行为。
在着色器中我设置了 Alpha 通道。您可以看到结果:

混合帖子
android项目的源码

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

But you should set behavior of your blend function yourown.
And in the shader I set alpha channel. You can see the result:

blending post.
the source of android project

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文