opengl着色器使颜色“消失”

时间:2011-02-10 19:14:11

标签: iphone opengl-es augmented-reality

我是opengl和着色器的新手。我正在尝试在iPhone上做一些增强现实,并用着色器搞乱来改变相机的输入。

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

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

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

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

我基本上是在问:

  1. 任何人都做过或看过类似的事情
  2. 我是否使用opengl es和opengl sl?
  3. 咆哮错误的树
  4. 这可能吗?
  5. 干杯。

1 个答案:

答案 0 :(得分:1)

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

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

gl_FragColor.a = 0;

您可以通过更改程序中的Alpha值来实现此目的,而无需使用着色器。 例如:

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

只需确保启用了Alpha混合:

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