[英]Increasing precision of OpenGL ES 2.0 and GPUImage
是否可以提高GPUImage或OpenGL ES中片段或顶点着色器的精度?
我希望使用GPU进行图像处理,并希望保留尽可能多的原始数据
您可以通过以下语句请求着色器使用硬件中实现的最高精度:
precision highp float;
precision highp int;
或通过对特定声明使用highp限定词。 我相信在任何情况下,着色器都将默认为最高可用精度。
究竟要达到的精度取决于特定的硬件实现。 同样,片段着色器中highp限定符的实现是可选的。 您可以使用glGetShaderPrecisionFormat()API调用查询格式的精度。 在Power VR SGX530芯片上,我获得了highp float和int的这些值:
float range = 126/126, precision = 23/0
int range = 24/24, precision = 0/0
不增加原始纹理数据就无法提高精度。
有许多种插值像素的方法,但这并不意味着可以提高精度。
您可以在IOS API(例如AVCaptureSessionPresetXXXXXX)中增加相机预设
GPUImage是由OpenGL ES制作的,因此着色器代码与GPUImage和任何opengl es 2.0程序中的着色器代码完全相同。
我也想让你知道顶点和碎片(像素)着色器在管道中正在做什么。 这些只是“重做”处理的一部分。
如果您不知道这一点,请记住,顶点着色器正在进行变形,而片段着色器正在进行纹理处理。
简而言之,如果要插值像素,则必须在片段着色器中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.