2013-02-25 70 views
1

是否可以提高GPUImage或OpenGL ES中的片段或顶点着色器的精度?提高OpenGL ES 2.0和GPUImage的精度

我期待使用GPU做图像处理,并希望尽可能多的原始数据保留尽可能

+0

我不确定你在问什么。如果您想保留原始数据,则始终可以保留原始图像。你在问如何增加每个通道8位以上的颜色动态范围? – 2013-02-26 17:05:14

回答

0

这是不可能的增加不增加原有的纹理数据的精度。

插值像素有很多种方法,但并不意味着精度会提高。

在你的情况下,可以增加在IOS API相机预设如AVCaptureSessionPresetXXXXXX

GPUImage由OpenGL ES的制成,以便将着色器代码是在GPUImage &着色器代码之间完全相同的任何OpenGL ES 2.0的程序。

另外我想让你知道顶点&碎片(像素)着色器在流水线上正在做什么。这些只是重复处理的一部分。

如果你不知道这只是记得顶点着色器正在做转换和片段着色器正在做纹理。

总之,如果你想插入像素它必须在碎片着色器。

1

您可以要求着色器通过使用语句中使用的硬件中实现最高精度:使用特定的声明的highp预选赛

precision highp float; 
precision highp int; 

或通过。我相信在任何情况下,着色器都将默认为可用的最高精度。

确切地说,得到你的精度取决于特定的硬件实现。另外,在片段着色器中实现highp限定符是可选的。您可以使用glGetShaderPrecisionFormat()API调用查询格式的精度。在Power VR SGX530芯片上,我得到了highp float和int的这些值:

float range = 126/126, precision = 23/0 
int range = 24/24, precision = 0/0