我无法使emscripten使用openGL着色器。该项目与emscripten和gcc都编译得很好,但是当我尝试运行emscripten输出时失败。在opengl着色器中使用emscripten
我从编译顶点着色器中得到的错误:
ERROR: 0:1: 'core' : invalid version directive
ERROR: 0:3: 'layout' : syntax error
的错误,我从编译片段着色器得到:
ERROR: 0:1: 'core' : invalid version directive
ERROR: 0:3: 'in' : storage qualifier supported in GLSL ES 3.00 only
ERROR: 0:3: '' : No precision specified for (float)
ERROR: 0:5: 'out' : storage qualifier supported in GLSL ES 3.00 only
ERROR: 0:5: '' : No precision specified for (float)
我编译这个项目的命令:
em++ src/*.cpp -Iinclude/ -o test.html -std=c++11 -s USE_GLFW=3 -s FULL_ES3=1
顶点着色源:
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 in_color;
uniform mat4 model;
uniform mat4 projection;
out vec3 out_color;
void main()
{
gl_Position = projection * model * vec4(position, 1.0f);
out_color = in_color;
}
片段着色器源:
#version 330 core
in vec3 out_color;
out vec4 color;
void main()
{
color = vec4(out_color, 1.0);
}
的着色器被装载作为从输出由xxd -i
我在C++ 11在Linux上的工作提供字符数组。该程序工作得很好,当我运行它本地,我已经尝试在Firefox和铬运行emscripten输出。
这似乎是不同版本之间的问题。有没有办法让emscripten与我目前的功能一起工作,还是必须以不同的方式编写着色器?如果我不得不重写我的着色器,我应该如何编写它们?
尝试从'#version'删除'core' ;无论如何,这是默认设置。 –
我删除了'核心',摆脱了关于核心的错误,但其余的错误依然存在。 – TheRoach