2013-02-25 91 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