openGL_Debug収集

2203 ワード

(1)glGetUniformLocationエラー:invalid operatorの場合、通常のプログラム関連エラーに加え、shaderにエラーがないか注意
(2)万悪のGLSLは,inの変数が読み取り専用であるため,shaderでinの変数を変更し,無名のエラーで長い間デバッグしていた.FUCK~
(3)またShaderの問題で、uniform変数がshaderの最終出力と何の関係もない場合、コンパイラは変数を最適化し、変数のlocationを提供できません.
glGetUniformLocation関数が-1を返すようにします.
(4)
d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1152) : error C2146: syntax error : missing ';' before identifier 'glAccum'

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1152) : error C2182: 'APIENTRY' : illegal use of type 'void'

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1153) : error C2144: syntax error : 'void' should be preceded by ';'

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1153) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

d:\programs\microsoft visual studio 8\vc\platformsdk\include\gl\gl.h(1172) : error C2182: 'APIENTRY' : illegal use of type 'void'


このようなエラーと同様に、ヘッダファイルの問題が原因かもしれません.画像インタフェースがwindowsのセットを使用している場合は、openglヘッダファイルの前に追加します.
#include<windows.h>

#pragma comment(lib, "opengl32.lib")


libにリンクを表示することをお勧めします.これにより、コード移植時にライブラリを構成する手間が省けます.
glutのようなヘッダファイルを使用している場合は、openglヘッダファイルはシステムヘッダファイルの後に置くことが望ましい.
#include <GL/glew.h>

#include <GL/freeglut.h>

#pragma comment(lib,"freeglut.lib")

#pragma comment(lib,"glew32.lib")