顶点着色器无法编译。找不到错误

达米安

编辑:

似乎错误是,不允许我在单独的线程中编译着色器?由于我刚才一直在将对象加载推入线程环境中,因此出现了错误消息。只是不认为这可能是它的原因。


我当前的顶点着色器由于某种原因无法编译。我收到的错误消息不存在,并且找不到错误。

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中的第三个参数)。请注意,共享上下文资源可能在某些(旧)设备上不起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Maya插件中编译顶点着色器

来自分类Dev

无法在Maya插件中编译顶点着色器

来自分类Dev

无法读取传递给顶点着色器的值

来自分类Dev

OpenGL无法将变量从顶点着色器发送到片段着色器

来自分类Dev

有人可以帮助pyopengl中的顶点着色器错误

来自分类Dev

无法从cso文件创建顶点着色器(从fx文件创建)

来自分类Dev

OpenGL ES 2.0 矢量转换无法通过矩阵乘法(在顶点着色器中)工作

来自分类Dev

顶点着色器中的边界框

来自分类Dev

OpenglES 2.0顶点着色器属性

来自分类Dev

没有属性的顶点着色器

来自分类Dev

glsl顶点着色器glGetUniformLocation失败

来自分类Dev

“构造函数”的参数过多[顶点着色器]

来自分类Dev

顶点着色器的OpenGL属性名称

来自分类Dev

在顶点着色器中移动/旋转形状

来自分类Dev

WebGL-丢弃顶点着色器标记的片段

来自分类Dev

GPU如何处理顶点着色器?

来自分类Dev

如何为GPGPU扩展顶点着色器功能

来自分类Dev

顶点着色器中对复数的运算

来自分类Dev

OpenGL奇怪的顶点着色器问题

来自分类Dev

GLSL顶点着色器gl_Position值

来自分类Dev

OpenGL调试,如何查看顶点着色器的结果

来自分类Dev

在Threejs中使用顶点着色器旋转几何

来自分类Dev

顶点着色器旋转ThreeJS对象

来自分类Dev

顶点着色器属性位置中的损坏数据

来自分类Dev

顶点着色器中的边界框

来自分类Dev

顶点着色器中的Phong照明

来自分类Dev

OpenGL顶点着色器变换,对象消失

来自分类Dev

在顶点着色器中移动/旋转形状

来自分类Dev

顶点着色器的支持程度如何?