7

Windows の Dev-C++ でライブラリを再構築しようとしていました。ただし、その間に追加したシェーダー機能はサポートされておらず、コンパイラーは関連する関数 (::glCreateShader()、::glCreateProgram() など) を見つけることができませんでした。

インターネットと Dev-C++ フォルダーを調べてみると、OpenGL の実装 (gl.h) は v1.1 のみであることがわかりました。SGIから最新のヘッダーをダウンロードするための推奨事項を見つけました。gl3.h を見つけましたが、詳細に調べたところ、gl.h がプロジェクトに含まれていないことがわかりました。SDL/SDL_opengl.h を確認する必要があります。

編集: SDL_opengl.hには gl.h含まれており、問題の関数のプロトタイプが宣言されています。問題は、なぜリンカ エラーではなくコンパイル時エラーが発生したのかということです。

(私のライブラリは mingw32、libOpenGL32、libSDL、libSDL_Image および libSDL_Mixer に対してのみリンクします。これは、OSX (もちろん mingw32 を除く) とほとんど同じで、問題はありませんでした。)

Dev-C++ および SDL で OpenGL v2.0 シェーダーを使用するにはどうすればよいですか?

4

2 に答える 2

0

実行時に関数のアドレスをロードできますか?

typedef GLhandle (APIENTRYP PFNGLCREATESHADERPROC) (GLenum shaderType);
PFNGLCREATESHADERPROC glCreateShader = NULL;
glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");

typedef GLhandle (APIENTRYP PFNGLCREATEPROGRAMPROC) ();
PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");
于 2009-06-19T14:29:31.203 に答える