2017-02-28 21 views
0

openGlの頂点シェーダーを作成しています。これは私のコードです:私は私のプログラムを実行するとGLSLエラー:ASCII以外の文字が正しくありません

#version 150 

in vec4 vPosition; 
in vec3 vNormal; 

out vec3 fN; 
out vec3 fE; 
out vec3 fL; 

uniform mat4 model_matrix; 
uniform mat4 view_matrix; 
uniform mat4 proj_matrix; 

uniform vec4 lightPos; 

void main() 
{ 
    vec3 pos = (view_matrix * model_matrix * vPosition).xyz; 
    vec3 lightPosInCam = (view_matrix * lightPos).xyz; 

    fN = normalize(view_matrix * model_matrix * vec4(vNormal,1.0)).xyz; 
    fE = normalize(vec3(0,0,0) - pos); 
    fL = normalize(lightPosInCam.xyz - pos); 

    gl_Position = proj_matrix*view_matrix*model_matrix*vPosition; 
} 

しかし、それは誤りのように思えるが、コンソールの印刷物であるため、いくつかのnonASCII文字が、私の}後があると言う:

#version 150 

in vec4 vPosition; 
in vec3 vNormal; 

out vec3 fN; 
out vec3 fE; 
out vec3 fL; 

uniform mat4 model_matrix; 
uniform mat4 view_matrix; 
uniform mat4 proj_matrix; 

uniform vec4 lightPos; 

void main() 
{ 
     vec3 pos = (view_matrix * model_matrix * vPosition).xyz; 
     vec3 lightPosInCam = (view_matrix * lightPos).xyz; 

     fN = normalize(view_matrix * model_matrix * vec4(vNormal,1.0)).xyz; 
     fE = normalize(vec3(0,0,0) - pos); 
     fL = normalize(lightPosInCam.xyz - pos); 

     gl_Position = proj_matrix*view_matrix*model_matrix*vPosition; 
}═════════════════════════ 
Printed Shader Read Status 
vshader_hw5.glsl failed to compile: 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
ERROR: 0:26: '' : illegal non-ASCII character (0xcd) 
+1

あなたのシェーダーローダーは、すべてがわかりません。 [mcve]で編集します。 – genpfault

+2

GLにシェーダーソースを供給するために使用しているコードを表示することがありますか?おそらくあなたの文字列が正しくヌルで終了していないか、間違った長さを渡しているようです。 – MuertoExcobito

+0

一部の見えないユニコード文字またはコントロールコードもオプションです... – Spektre

答えて

1

However, when I run my program, it seems like the error says there is some nonASCII character after my }, because in console prints:

これは、OpenGLへのシェーダソース文字列がゼロバイト(NUL)で正しく終了していない場合や、渡されたバッファ長がソース文字列の長さと一致しない場合に発生する一般的なエラーです。

解決方法:長さを明示的に渡していない場合(つまり、長さパラメータにNULLを渡す場合)、ソース文字列が適切にゼロ終端されていることを確認してください。それ以外の場合は、長さがソース文字列バッファーの長さと正確に一致することを確認してください。

関連する問題