【问题标题】:OpenGl BlendingOpenGL混合
【发布时间】:2011-05-06 12:58:37
【问题描述】:

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

【问题讨论】:

  • 让自己成为注册用户。你会有更多的答案:-)

标签: opengl-es opengl-es-2.0 color-blending


【解决方案1】:

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

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

【讨论】:

  • 我不认为这是可能的,或者我不完全理解模板缓冲区的工作原理,我有一个包含所有矩形的大顶点数组,我无法一一绘制它们,因为它们有很多而且它很慢。我需要更深入地了解 scencil :)
【解决方案2】:

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

【讨论】:

  • 仅当它们是轴对齐的;)
  • 嗯,它们是轴对齐的,但计算这些交叉点可能很慢,我有大约 400 个矩形和 1ghz 蜂鸟。
【解决方案3】:
GLES20.glEnable( GLES20.GL_BLEND );
GLES20.glBlendFunc( GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA );

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

blending post。 android项目的source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多