Dom*_*ngo 0 opengl shader operating-system glsl
我在IOS上使用OpenGL ES上的bevor,但现在我想在操作系统上尝试自己的OpenGl.我有测试的基本着色器,但不知怎的,它不会编译?有什么我需要了解的OpenGl,那里有什么不同.
这里着色器:
attribute vec4 position;
attribute vec2 texCoord;
attribute vec3 normal;
varying lowp vec2 vTexCoord;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat3 normalMatrix;
void main()
{
vTexCoord = texCoord;
gl_Position = projectionMatrix*modelViewMatrix * position;
}
Run Code Online (Sandbox Code Playgroud)
分段:
uniform sampler2D uSampler;
varying lowp vec2 vTexCoord;
void main()
{
lowp vec4 texCol = texture2D(uSampler, vTexCoord);
gl_FragColor = vec4(texCol.rgba);
}
Run Code Online (Sandbox Code Playgroud)
出现的错误是:
错误:0:9:'vec2':语法错误:语法错误
精度说明符(lowp,mediump和highp)是GLSLES的一部分,而不是GLSL,所以要在GLSL上编译,你应该删除它们.
如果你想在GLSL和GLSLES上使用相同的着色器源,那么你可以通过在着色器之前包含这样的字符串来#define它们.
#define highp
#define mediump
#define lowp
Run Code Online (Sandbox Code Playgroud)