【发布时间】:2016-08-14 03:25:18
【问题描述】:
我使用 sdl 2.0 创建了一个应用程序,并使用 2.0 版本初始化了 opengl,如下所示:
SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION, 2 );
SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MINOR_VERSION, 0 );
然后我在网上找到了一些简单的漫反射着色器:
attribute highp vec3 inVertex;
attribute mediump vec3 inNormal;
attribute mediump vec2 inTexCoord;
uniform highp mat4 MVPMatrix;
uniform mediump vec3 LightDirection;
varying lowp float LightIntensity;
varying mediump vec2 TexCoord;
void main()
{
//Transform position
gl_Position = MVPMatrix * vec4(inVertex, 1.0);
//Pass through texcoords
TexCoord = inTexCoord;
//Simple diffuse lighting in model space
LightIntensity = dot(inNormal, -LightDirection);
}
编译失败,错误如下:
error: syntax error, unexpected NEW_IDENTIFIER
然后我删除后发现
highp mediump lowp
编译正常,运行正常, 1.这是什么原因? 另一个问题: 2.我还能在linux和android上运行这个shader吗? 我正在使用 linux 现在一切运行良好。 谢谢
【问题讨论】:
-
GL 2.0 和 GL ES 2.0 是不同的东西。您的着色器适用于 ES。如果您使用
#version 100标记着色器,您可能可以使用得到广泛支持的 (ARB_ES2_compatibility)[opengl.org/registry/specs/ARB/ES2_compatibility.txt] 扩展。