1

OS X で単純な OpenGL 3.2 コア プロファイル アプリケーションを作成しようとしています。Macports 経由で SDL2 を使用していますが、それが問題になるとは思えません。私の理解では、GLSL を使用する必要が#version 150あり、現在、単純なフラグメント シェーダーは次のようになっています。

#version 150

out vec4 outputF;

void main() {
    outputF = vec4(1.0, 0.0, 0.0, 1.0);
}

outputFここで、関数を介してフラグメントの色が設定されていることを OpenGL に伝える必要があると考えていglBindFragDataLocationます。問題は、どこにも宣言されていないように見えることです。この機能は 3.2 コア プロファイルでは利用できないのでしょうか (私の検索とは異なります)、それともヘッダー ファイルがありませんか、それとも何ですか?

4

1 に答える 1

4

OS X を使用している場合は<OpenGL/gl3.h>、GL 3.2 (コア) プロファイルのヘッダーを含めます。OpenGL フレームワークの一部として、次の場所にあります。

/System/Library/Frameworks/OpenGL.framework/Headers/gl3.h

フラグメントをデフォルトのフレームバッファに書き込んでいる場合、この呼び出しは必要ありません。つまり、デフォルトoutputFで「色番号」にバインドさ(0)れます。IIRC、予約済みのプレフィックスoutで始まらない限り、この変数を好きなように呼び出すことができます。gl_

私はまだ SDL2 を試していませんが、#define GL3_PROTOTYPES最初に追加することをお勧めします。

#define GL3_PROTOTYPES

#if defined (__APPLE_CC__)
#include <OpenGL/gl3.h>
#else
#include <GL/glcorearb.h> // assert GL 3.2 core profile available...
#endif
于 2013-09-28T06:42:10.597 に答える