Я использую LibGDX для Android. У меня есть фрагментные и вершинные шейдеры, как указано ниже
Фрагментный шейдер:
#ifdef GL_ES
#define LOW lowp
#define MED mediump
#define HIGH highp
precision mediump float;
#else
#define MED
#define LOW
#define HIGH
#endif
varying vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
uniform vec2 oneOverResolution;
vec2 frgCOverRes;
void main() {
frgCOverRes = gl_FragCoord.xy*oneOverResolution.xy;
frgCOverRes.y = -frgCOverRes.y+1;
vec4 c = texture2D(u_texture, frgCOverRes);
gl_FragColor = c;
}
вершинный шейдер:
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoords;
void main() {
v_color = a_color;
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position;
}
Но Я читал, что highp несовместим с некоторыми устройствами.
А также не используется (mediump, lowp также не используется).
Итак, я собираюсь изменить фрагментный шейдер на следующий код:
#ifdef GL_ES
precision mediump float;
#endif
varying vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
uniform vec2 oneOverResolution;
vec2 frgCOverRes;
void main() {
frgCOverRes = gl_FragCoord.xy*oneOverResolution.xy;
frgCOverRes.y = -frgCOverRes.y+1.0;
vec4 c = texture2D(u_texture, frgCOverRes);
gl_FragColor = c;
}
Я использую 9 в качестве minSdkVersion.
Я тестировал этот код вЭмулятор и в моем телефоне (huaweii j6ii).
Но есть сомнения с другими устройствами.
Деос этот фрагментный шейдер совместим со всеми устройствами?