【问题标题】:A problem in the field of blend of openGLopenGL的blend领域的一个问题
【发布时间】:2010-01-20 16:59:35
【问题描述】:

我首先在屏幕上绘制一个图像作为背面,然后为这样的图片绘制一个蒙版: 它是一个中间是白色的圆圈,左边都是黑色的。我使用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 使其仅在背面图像上显示白色圆圈。 然后我需要在蒙版的同一位置绘制另一个图像。我的目标是只在与白色圆圈对应的部分绘制此图像。其实我想画的是月亮。我必须让它不透明。我该怎么办?

我希望得到您的帮助。你可以发邮件给我 500yearslater@gmail.com

非常感谢!

【问题讨论】:

  • 你的方法听起来有点不合常规。你能解释一下你为什么要尝试这个吗? (另外,在 StackOverflow 上,我们不会互相发送电子邮件,而是在本网站上回复)
  • 听起来他或她已经习惯了使用 BitBlt 绘制蒙面精灵的方式。

标签: opengl


【解决方案1】:

只是将黑/白放在月亮图像的 Alpha 通道中?这可能是您能做的最明智的事情,而且遵循惯例。

或者,如果您致力于您的方法。将您的黑色/白色渲染到帧缓冲区的 alpha 部分(如果您按照您所说的去做,它可能已经存在)然后使用 DST_ALPHA 而不是 SRC_ALPHA 进行下一次传递。然而,这不是在 OpenGL 中通常的做法。

【讨论】:

【解决方案2】:

我不知道我是不是没有正确理解这个问题,但你不能只使用一张图片,里面有圆圈和最后使用的图片吗?

如果不合适,您可以使用模板缓冲区:在绘制第二张图像时将其设置为一个值,并仅在第三张图像中该值的像素上渲染。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多