android – Vertex Shader无法编译.找不到错误

android – Vertex Shader无法编译.找不到错误,第1张

概述编辑: 似乎错误是,我不允许在一个单独的线程中编译着色器?由于我刚刚将对象加载推送到线程环境,因此出现了错误消息.只是没想到它可能是它的原因. 由于某种原因,我当前的顶点着色器无法编译.我得到的错误信息不存在,我找不到错误. uniform mat4 u_MVPMatrix; uniform mat4 u_MVMatrix; uniform vec3 u_Camera 编辑:

似乎错误是,我不允许在一个单独的线程中编译着色器?由于我刚刚将对象加载推送到线程环境,因此出现了错误消息.只是没想到它可能是它的原因.

由于某种原因,我当前的顶点着色器无法编译.我得到的错误信息不存在,我找不到错误.

uniform mat4 u_MVPMatrix;       uniform mat4 u_MVMatrix;        uniform vec3 u_CameraPos;attribute vec4 a_position;      attribute vec4 a_color;         attribute vec3 a_normal;        varying vec3 v_position;        varying vec4 v_color;           varying vec3 v_normal;          varying vec3 v_Cameraposition;varying vec4 v_AmbIEnt;         voID main(){    v_position = vec3(u_MVMatrix * a_position);    v_color = a_color;    v_normal = vec3(u_MVMatrix * vec4(a_normal,0.0));    //v_Cameraposition = vec3(u_MVMatrix * vec4(u_CameraPos,0.0)); // taken out to deBUG    v_Cameraposition = u_CameraPos;    gl_position = u_MVPMatrix * a_position;}

这个片段着色器是:

precision mediump float;        uniform vec3 u_lightPos;        uniform vec4 u_light;uniform vec4 u_AmbIEnt;uniform vec3 u_lightDirection;uniform vec3 u_CameraPos;varying vec4 v_AmbIEnt;        varying vec3 v_position;        varying vec4 v_color;           varying vec3 v_normal;          varying vec3 v_Cameraposition;// The entry point for our fragment shader.voID main(){    float distance = length(u_lightPos - v_position);    vec3 lightVector = normalize(u_lightPos - v_position);    float diffuse = max(dot(v_normal,lightVector),0.1);    diffuse = diffuse * (1.0 / (1.0 + (0.25 * distance * distance)));    // specular lighting removed due to deBUGging    gl_Fragcolor = v_color * (u_AmbIEnt + (diffuse * u_light));}

“试着”收到错误消息:

Log.d(TAG,"Compilation -> " + GLES20.glGetShaderInfolog(iShader));

从方法返回一个空字符串,以及

Log.e(TAG,"Vertex Shader Failed -> " + GLES20.glGetError());

简单地返回0.

我正在为AndroID的OpenGL ES 2.0开发,如果AndroID有任何我不知道的限制?

感谢您的任何帮助!

解决方法 OpenGL上下文仅适用于每个线程,因此您是正确的.如果要创建后台加载线程,您不仅需要在该线程中创建新上下文,还要确保它共享资源( eglCreateContext中的第三个参数).请注意,共享上下文资源可能无法在某些(较旧的)设备上运行. @H_419_50@ 总结

以上是内存溢出为你收集整理的android – Vertex Shader无法编译.找不到错误全部内容,希望文章能够帮你解决android – Vertex Shader无法编译.找不到错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存