我现在正在尝试使用片段着色器来处理纹理上的图像。但是,我发现片段着色器仅支持 10 位浮点数,因此当屏幕长度为 1280 像素时,我无法获取存储在像素中的值,因为我无法使用 10 位来采样 1280 像素.
我想知道如何准确地获得大纹理上的像素?
我现在正在尝试使用片段着色器来处理纹理上的图像。但是,我发现片段着色器仅支持 10 位浮点数,因此当屏幕长度为 1280 像素时,我无法获取存储在像素中的值,因为我无法使用 10 位来采样 1280 像素.
我想知道如何准确地获得大纹理上的像素?
浮点数有 3 种不同的精度格式。OpenGL ES 着色语言参考说:
highp
: 16 位,浮点范围:-2^62 到 2^62,整数范围:-2^16 到 2^16mediump
: 10 位,浮点范围:-2^14 到 2^14,整数范围:-2^10 到 2^10lowp
: 8 位,浮点范围:-2 到 2,整数范围:-2^8 到 2^8为了能够从 >1024x1024 纹理中采样,您必须highp
通过将以下代码放在GLSL
程序开头来切换精度。
precision highp float;