关于 iphone:opengl shader make color \\”disappear\\”

opengl shader make color "disappear"

我是 opengl 和着色器的新手。我正在尝试在 iphone 上做一些增强现实,并使用着色器来更改来自相机的提要。

我想要实现的是通过将颜色设置为与周围颜色相匹配来使图片中的对象消失的外观。我有一个黄色矩形,里面是一个红色的小圆圈。我想通过将颜色设置为黄色来给红色圆圈消失的印象。

它并不总是纯色,但我只是想先了解基础知识。

目前我有一个简单的着色器,它可以使红色变浅,但这并不理想,因为它不会接近周围的颜色,我希望它适用于不同颜色的对象和不同颜色的周围环境。

我什至不是 100% 着色器是我需要查看的,甚至不是 opengl。我使用它是因为它在 iPhone 上提供的性能。

我基本上是在问:

  • 任何人都做过或见过类似的事情
  • 我是否使用 opengl es 和 opengl sl 叫错了树?
  • 这甚至可能吗?
  • 干杯。


    您听说过 alpha 混合吗?
    颜色有 4 个通道。红色、绿色、蓝色和 alpha (rgba)。 Alpha 通道决定透明度。您可以将其设置为 0(完全透明/不可见)或 1(完全实心)之间的任何值。

    要使您的对象不可见,只需将 alpha 设置为 0!
    例如在您的片段着色器中:

    1
    gl_FragColor.a = 0;

    您可以在不使用着色器的情况下通过更改程序中的 alpha 值来实现此目的。
    例如:

    1
    2
    3
    4
    glColor4f(1.0, 0.0, 0.0, 0.5); //Draws something red with half transparency (hence the 0.5)
    glVertex3f(...);
    glVertex3f(...);
    glVertex3f(...);

    只要确保你启用了 alpha 混合:

    1
    2
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);