2011-02-10 169 views
0

我是新来的opengl和着色器。我正在试图在iPhone上做一些增强现实,并用着色器来改变摄像头的馈送。opengl着色器使颜色“消失”

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

它并不总是纯色,但我只是想先弄清楚基础知识。

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

我甚至没有100%的着色器是我需要看的甚至是opengl。我使用它是因为它在iPhone上的性能。

我基本上问:

  1. 任何人做过或见过类似的东西
  2. 难道我吠叫使用的OpenGL ES和OpenGL SL错了?
  3. 这甚至可能吗?

干杯。

回答

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); 
+0

我没有访问对象设置其透明度,因为图像是从的视频Feed中的iPhone,所以我不认为这种方法会起作用,还是我误会了? – JFoulkes 2011-02-11 09:11:07