我正在尝试创建图像的逆像,作为应用程序的一部分。
按照Apple的GLImageProcessing演示,我已经使用openGL实现了一些图像处理。

我的图像是从.jpg加载到纹理的。我可以愉快地修改对比度和亮度。

但是,当尝试创建反像时(将黑色换成白色),结果却不尽人意。
我尝试了几种方法,但是在该设备上没有任何效果。
到目前为止,我已经尝试过了;
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);这在模拟器中效果很好,但是在设备上会产生不稳定的结果。
我也尝试过;
glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_ONE_MINUS_DST_COLOR);像以前一样创建结果。
最后,我尝试了;
glLogicOp(GL_XOR);只需在图像和黑屏之间切换即可。

您能提出一个(相对)简单的解决方案来反转我的图像吗?

最佳答案

着色器如何:

void main() {
    vec4 color = texture2D(texture, textureCoordinate);
    float inverted = 1.0 - color.r;
    vec4 inverted_vec = vec4( vec3(inverted), 1.0);
    gl_FragColor = clamp(inverted_vec, 0.0, 1.0);"
};

10-07 23:35