2015-09-28 36 views
0

我在IOS上的OpenGL ES上工作過,但現在我想在操作系統上嘗試一下自己的OpenGL。我有真正的基礎着色器測試,但不知何故,它不會編譯?有什麼我需要知道OpenGl,那裏有什麼不同。OS上的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; 
} 

片段:

uniform sampler2D uSampler; 

varying lowp vec2 vTexCoord; 

void main() 
{ 
    lowp vec4 texCol = texture2D(uSampler, vTexCoord); 

    gl_FragColor = vec4(texCol.rgba); 
} 

附帶的錯誤是:

ERROR:0:9: 'VEC2':語法錯誤:語法錯誤

+0

它的版本是什麼,錯誤字符串是什麼? – BDL

+0

錯誤是:錯誤:0:9:'vec2':語法錯誤:語法錯誤,用於頂點着色器。和錯誤:0:6:'vec2':語法錯誤:語法錯誤的片段 – DomiDiDongo

回答

5

精度說明符(lowp,mediump和highp)是GLSLES的一部分,而不是GLSL,因此要在GLSL上進行編譯應該刪除它們。

如果您希望跨GLSL和GLSLES使用相同的着色器源,那麼您可以#在着色器之前包含像這樣的字符串來定義它們。

#define highp 
#define mediump 
#define lowp 
+0

確定是這樣的:好吧謝謝你 – DomiDiDongo