Windows 7 ProfessionalEditionにデフォルトで含まれているgluおよびglヘッダーファイルを使用してOpenGLプログラムを構築しました。今、私はOpenGLゲーム開発を説明する本を購入しました。この本の著者は、私のプロジェクトにglewヘッダーを含める必要があると述べました。これを実行した後、未解決の外部シンボルエラーが発生しました。
だから、今私は本当に混乱しています。以前、プログラムでglBeginステートメントとglEndステートメントを使用しました。ここで、glBindBuffersやglGenBufferなどを操作する必要がありますが、次のような未解決の外部シンボルエラーが発生します。
1>cWindows.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBufferData
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewGenBuffers
これらのヘッダーファイルの違いと私がそれらと何をしなければならないかを説明できる人はここにいますか?
私は何度もゴーグルをしましたが、さまざまなサイトで「グリー」や「グルト」のようなもっと紛らわしい言葉があります。
ここでは、3つの異なるものを混ぜ合わせています。
GLEWとGLUは完全に異なるものであり、互いに置き換えることはできません。
_GL/gl.h
_はベースのOpenGLヘッダーであり、OpenGL-1.1関数とトークンの宣言を提供します。バージョン1.1以降の場合は、OpenGL拡張メカニズムを使用する必要があります。これは退屈で退屈な作業であるため、使いやすいライブラリにすべての汚い詳細が詰め込まれたGLEWプロジェクトによって自動化されています。このライブラリの宣言は、ヘッダーファイル_GL/glew.h
_にあります。 OpenGL拡張機能は基本的なOpenGLなしでは意味がないため、GLEWヘッダーには通常のOpenGLヘッダーが暗黙的に含まれ、_GL/glew.h
_を含めると、_GL/gl.h
_を含める必要がなくなります。
次に、便利なメソッドのセットであるGLUがあります。これは、非常に時代遅れであり、最新のOpenGLプログラムでは使用しないでください。最新のGLUはないので、忘れてください。とにかく、その宣言はヘッダー_GL/glu.h
_(あなたが尋ねていたもの)によって利用可能になります。
ただし、発生するエラーはインクルードファイルとは関係ありません。これらはリンカーエラーです。宣言を含めるだけで、仕事の半分になります。残りの半分は実際の定義をリンクしており、それらはライブラリファイルのヘッダーにはありません。 * nix OSでは_libglew.so
_または_libglew.a
_、Windowsでは_glew.lib
_または_glew32.lib
_または_glews.lib
_または_glew32s.lib
_。静的バージョン(「s」のないバージョン)を使用していない場合は、適切なDLLもインストールしておく必要があります。
したがって、GLEWを使用するには、ヘッダーを含める必要がありますおよびリンカーオプションのライブラリのリストに追加します。また、プログラムでOpenGLコンテキストを取得したら、glewInit();
を呼び出す必要があります。
私はOpenGLに慣れていないので、間違っている場合は訂正してください。