【发布时间】:2015-05-09 10:27:25
【问题描述】:
我正在按照这个示例使用 GLES 2.0 (http://maninara.blogspot.com/2012/09/render-camera-preview-using-opengl-es.html) 渲染相机预览。它工作得很好,直到我从其他地方复制了一些 GLSL 着色器代码并注意到它不起作用并且我收到了这个错误:
error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
所以要查看问题是否来自我复制的着色器代码,我在顶点着色器示例(参见上面的链接)中更改了这一行
gl_Position = vec4 ( vPosition.x, vPosition.y, 0.0, 1.0 )
到
gl_Position = vec4 ( vPosition.x, vPosition.y, 0.0f, 1.0f )
但我仍然遇到同样的错误。我通过输出 GLES20.glGetString(GLES20.GL_SHADING_LANGUAGE_VERSION) 确认 GLSL 的版本足够高:
GLSL Version = OpenGL ES GLSL ES 3.10
我是否错误地设置了我的 OpenGL ES 上下文?这是怎么回事?
更新:如果我添加“#version 120”,我会收到此错误:
error C0201: unsupported version 120
【问题讨论】:
标签: android opengl-es glsl glsles