我是opengl和着色器的新手。我正在尝试在iPhone上做一些增强现实,并用着色器搞乱来改变相机的输入。
我想要实现的是通过设置颜色以匹配周围颜色,图片中的对象消失的外观。我有一个黄色的矩形,里面是一个小红圈。我想通过将颜色设置为黄色来给红色圆圈消失留下深刻的印象。
它并不总是纯色,但我只是想先了解基础知识。
目前我有一个简单的着色器会使红色变浅但这并不理想,因为它不会接近周围的颜色,我希望这适用于不同颜色的物体和不同颜色的周围。
我甚至不是100%着色器是我需要看的甚至是opengl。我正在使用它,因为它在iPhone上提供了性能。
我基本上是在问:
干杯。
答案 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);