2016-07-28 10 views
-2

私はOpenGLの初心者です。私は頂点シェーダを作成し、シェーダをコンパイルするようなことをします。なぜglGetAttribLocationは2つの異なる属性に対して同じ値を返しますか?

頂点シェーダ:

in vec4 vPosition; 
in vec4 vColor; 

out vec4 Color; 

void main(void){ 
    gl_Position = vPosition; 
    Color = vColor; 
} 

私はC++でこのコードを書いた後:理由は何ですか

vPosition location: 4294967295 
vColor location: 4294967295 

GLuint PositionID = glGetAttribLocation(SProgram, "vPosition"); 
GLuint ColorID = glGetAttribLocation(SProgram, "vColor"); 

cout << "vPosition location: " << PositionID << endl << "vColor location: " << ColorID << endl; 

そしてその結果は、2つの同じ場所かなり面白かったですそれ?

+1

http://stackoverflow.com/questions/29170900/glgetattriblocation-returns-large-and-unusable-valueを参照してください。これが重複としてマークされるほど近いかどうかは分かりませんが、基本的に同じ答えです。 –

答えて

5

実際に返品タイプはGLuintではなく、GLint(署名されています)です。

だから4294967295実際には-1です。つまり、どこかで問題が発生しました。原因は、多くの可能性:

  • プログラムが無効であるか、正しく属性が
  • 属性名が無効

である私たちはあなたを推測することはできませんので、それが原因を伝えるのは難しい使用されていない

  • をリンクコードは問題ですが、別の場所にあります。

  • 関連する問題