【问题标题】:Create an alpha mask (glBlendFunc does what now?)创建一个 alpha 蒙版(glBlendFunc 现在做什么?)
【发布时间】:2013-06-27 07:52:05
【问题描述】:

我正在尝试渲染方形边框(可变粗细,因此线条不起作用)。我在想 4 个四边形就可以了(所有的大小都一样,只是为每一边旋转和平移)。然后我想,2个四边形应该做——画一个然后在中间画一个小的。但是,我实际上是在尝试在第二个盒子中创建一个“洞”。我想我可能可以应用一些混合功能来满足我的需求。

我不太明白会发生什么。

我知道一个因素,但我不明白源和目标的定义。 src 是该位置的现有像素还是我打算放在那里的像素?目的地似乎很直观地调用缓冲区,因为这最终是我计划放置像素的地方。

如果是这样,当我放下我的第一个盒子时,我会破坏像素数据,无论我如何尝试混合,我都会失败。这个对吗?这仍然让我对参数的含义一无所知(sfactor,dfactor) 如果我将 GL_DST 的东西放在 src 和 dst 中会发生什么?有没有很好的解释这些是如何工作的?我找到了

http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquation.xml

http://www.andersriggelsen.dk/glblendfunc.php

但是没有很好的例子来说明如何将这些因素实际应用于像素数据。

【问题讨论】:

    标签: c++ opengl alphablending blending


    【解决方案1】:

    目标是视频缓冲区(帧缓冲区)的像素数据,源是要混合的像素数据。
    文中说:

    帧缓冲(''destination''颜色)

    新像素(“源”颜色)

    【讨论】:

    • 是的,好吧,我认为我想做的事情是不可能的。我可以做一个透明的盒子,也可以做一个不透明的。无论哪种方式,下一个框都忽略了第一个框,并且无法将其与原始纹理流分开。渲染 4 个四边形而不用担心混合它更有意义。
    • @Chemistpp 只需 alpha 混合它,你就可以有部分透明度。
    • 嗯,这是我的默认设置,但这或多或少是在预先存在的项目(面板、菜单、编辑框、按钮等)周围渲染边框
    猜你喜欢
    • 2014-02-10
    • 2011-03-22
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多