を呼び出した後に私達はちょうどトンを固定いくつかの時間を費やし彼の私たちは、にOSX 10.8とのUbuntu 14.04(申し訳ありませんがないWINDOWS経験を)のQt 5.2.1を実行しているとQGLFormatを使用してOpenGL3.2コンテキストを作成しています。
OSXでは、すべてのOpenGL3.2機能としては問題は(など、バッファを描く、制服を設定する。)で定義されているが存在しない。一方
#include "OpenGL/gl3.h" ///< already included by Qt.. so nothing to do
上のLinux、我々はまた、が私たちのQGLWidgetを持っているを試みた
#include "GL/gl.h"
#include "GL/glext.h" ///< not included by Qt!!! manually include it
:我々はこれらのBOTHを含める必要がクラス継承は、QGLFunctions_3_2_Coreから(このクラスはでglDrawBuffer等...の独自のコピーを定義する)が、これは便利ではなかったと単純にセグメンテーション違反の結果:
Program received signal SIGSEGV, Segmentation fault. 0x0000000000407068
in glGetUniformLocation (this=0xbc5820, name=0x407cd0 "view_projection", program=1)
at /usr/include/qt5/QtGui/qopenglfunctions_3_2_core.h:1075 1075
return d_2_0_Core->GetUniformLocation(program, name);
は、我々はまた、「に#defineを調査しましたGL_GLEXT_PROTOTYPES 1 "となりましたが、これは、glcorearb.h(このヘッダーはオンラインでダウンロードできます)を使用している場合にのみ役立ちました。
フラグメントシェーダーなどがある場合は、何らかの拡張読み込みコードが必要です。あなたのコンテキストを作成するとき、あなたはどのGL版を入手していますか? –
@ニコル:glGetString(GL_VERSION)は私に "3.3.0 NVIDIA 295.40"を与えます。 GLコンテキストは、QGLWidgetのmakeCurrent()を使用して設定されました。 FBOを削除すると、シェーダは完全に機能します(つまり、デフォルトのウィンドウカラーバッファを使用します)。 –
OpenGL関数を読み込むために何を使用していますか? –