gpt4 book ai didi

android - opengles 2.0 不编译 fragment 着色器代码

转载 作者:行者123 更新时间:2023-11-30 01:01:47 26 4
gpt4 key购买 nike

我一直在开发一个应用程序,但我遇到了一些我无法解释的错误。这些错误仅出现在我的 oneplus 3 上,但未使用 google nexus 6p genymotion 模拟器。

我已经搜索了几个小时,但找不到遮阳篷。

这是我的编译代码:

public static int loadShader(int shaderType, String source){
int shader = GLES20.glCreateShader(shaderType);
if (shader != 0) {
GLES20.glShaderSource(shader, source);
GLES20.glCompileShader(shader);
int[] compiled = new int[1];
GLES20.glGetShaderiv(shader,GLES20.GL_COMPILE_STATUS, compiled,0);
if (compiled[0] == 0) {
Log.e(TAG, "Could not compile shader " + shaderType + ":");
Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
GLES20.glDeleteShader(shader);
shader = 0;
}
}
return shader;
}

我的 fragment 着色器:

precision mediump float;
uniform vec4 vColor;
void main() {
gl_FragColor = vColor;
}

这是错误:

E/MyGLRenderer: Could not compile shader 35632:
E/MyGLRenderer: ERROR: 0:1: 'in' : Syntax error: syntax error
INTERNAL ERROR: no main() function!
ERROR: 1 compilation errors. No code generated.

最佳答案

我首先在我的旧 galaxy ace 2 上尝试修复了它,修复了该设备上的所有错误,然后一切又恢复正常了。我改变的事情:

  • 添加#verion 100%n
  • 读取着色器文件后,我将第 1 行字符串放入 String.Format(string) 中,这样 %n 就会转换为换行符(编译器会提示版本号后面有未知字符)

关于android - opengles 2.0 不编译 fragment 着色器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39294303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com