我有简单的GLSL顶点着色器,我尝试在5.1 Android(设备小米mi4i)上编译
#ifdef GL_ES
precision mediump float;
#endif
attribute vec3 coord3d;
attribute vec2 texcoord;
varying vec2 f_texcoord;
uniform mat4 mvp;
void main(void) {
gl_Position = mvp * vec4(coord3d, 1.0);
f_texcoord = texcoord;
}
但我收到了错误
09-02 12:44:40.462 22673-22788 / com.sample.opengl.test E / Adreno-SC :: GLSL第1行:错误:#ifdef之后的意外令牌。
AFAIK GL_ES
a valid preprocessor define
那么问题是什么?这是一个实施问题吗?
更新
> cat -v cube.v.glsl
#ifdef GL_ES
precision mediump float;
#endif
attribute vec3 coord3d;
attribute vec2 texcoord;
varying vec2 f_texcoord;
uniform mat4 mvp;
void main(void) {
gl_Position = mvp * vec4(coord3d, 1.0);
f_texcoord = texcoord;
}
> od cube.v.glsl
0000000 064443 062146 063145 043440 057514 051505 020012 020040
0000020 070040 062562 064543 064563 067157 066440 062145 072551
0000040 070155 063040 067554 072141 005073 062443 062156 063151
0000060 005012 072141 071164 061151 072165 020145 062566 031543
0000100 061440 067557 062162 062063 005073 072141 071164 061151
0000120 072165 020145 062566 031143 072040 074145 067543 071157
0000140 035544 005012 060566 074562 067151 020147 062566 031143
0000160 063040 072137 074145 067543 071157 035544 005012 067165
0000200 063151 071157 020155 060555 032164 066440 070166 005073
0000220 073012 064557 020144 060555 067151 073050 064557 024544
0000240 075440 020012 063440 057554 067520 064563 064564 067157
0000260 036440 066440 070166 025040 073040 061545 024064 067543
0000300 071157 031544 026144 030440 030056 035451 020012 063040
0000320 072137 074145 067543 071157 020144 020075 062564 061570
0000340 067557 062162 005073 005175
0000350