Android 从采样器外部读取texel时编译时失败
最小失败片段着色器:Android 从采样器外部读取texel时编译时失败,android,opengl-es,glsl,glsles,Android,Opengl Es,Glsl,Glsles,最小失败片段着色器: #version 320 es #extension GL_OES_EGL_image_external_essl3 : require precision highp float; precision highp int; vec4 x(samplerExternalOES sampler) { return texture(sampler, vec2(0, 0)); } void main() { } 在三星G-930P上,使用OpenGL ES 3.2
#version 320 es
#extension GL_OES_EGL_image_external_essl3 : require
precision highp float;
precision highp int;
vec4 x(samplerExternalOES sampler) {
return texture(sampler, vec2(0, 0));
}
void main() {
}
在三星G-930P上,使用OpenGL ES 3.2V@145.0 (GIT@I5bc0f577f9),编译失败,着色器日志读取为:
内部编译器错误:错误:数组索引超出边界
在三星G-930F上——本质上是相同的手机,相同的Android版本,等等。但是在OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75上,它可以编译——后者可以正确执行更复杂的着色器,从采样器外部读取texel
这是G-930P上OpenGL ES实现中的一个错误吗?指定要在采样器外部
上调用纹理
的函数的参数是否不合理
这是G-930P上OpenGL ES实现中的一个错误吗
看起来真像
在三星G-930F上-基本上是相同的手机、相同的安卓版本等,但使用OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75
如果你看手机里面,情况就不一样了
第一款手机(带版本)V@145.0)第二款(12p1)基于使用Adreno GPU的高通Snapdradon,第二款基于使用Mali GPU的三星Exynos
在我看来,这似乎是Adreno设备驱动程序中的错误,Mali的驱动程序正在正确处理它