0

テキストを表示する簡単な例の openGL の例をコンパイルしようとしているときに、「glWindowPos2i」の問題が解決されないことに遭遇しました。glWindowPos2i は、GCC の下で C プログラムとして正常にコンパイルされたように見えましたが、g++ を使用した C++ プログラムとして Eclipse の下でエラーを解決できませんでした。(以下の解決策)

環境は、openGL 3.3.0 (NVIDIA 310.44) GLEW バージョン 1.8.0 を使用した ubuntu 13.04 の eclipse (juno) です。

4

1 に答える 1

2

問題は、glWindowPos2i が拡張機能であり、c++ でコンパイルするには、glWindowPos2i をそのアドレスで定義する必要があることでした。プログラムの先頭で、インクルードの直後に glWindowPos2i をグローバルとして定義する必要があります。

PFNGLWINDOWPOS2IPROC glWindowPos2i;

次に、プログラムの本体で、glutInit の後に、グローバル変数に値を割り当てる必要があります。

glWindowPos2i =  (PFNGLWINDOWPOS2IPROC) glutGetProcAddress("glWindowPos2i");

glutGetProcAddress は include for によって定義され、PFNGLWINDOWPOS2IPROC の定義は

私が使用しているインクルードの完全なリストは

#include <GL/glew.h>
#include <GL/glext.h>
#include <GL/freeglut.h>
#include <GL/freeglut_ext.h>

私が使用しているリンカーインクルードは

-lGL -lm -lglut -lGLEW -lGLU
于 2013-09-16T06:23:52.740 に答える