2

thisに従って D で OpenGL を使用するために Derelict3&glfw で遊んでいます。拡張機能を使用する場合は、最初にコンテキストを作成する必要があります。これは、glfw でウィンドウを作成し、それを現在のコンテキストとして設定することによって行われます。コンテキストを作成して設定したら、DerelictGL3.reload()すべての拡張機能をロードするために使用する必要があります。

ここで、ウィンドウを作成する前にすべての準備を行いたいと思います。これらの準備の 1 つは、すべてのシェーダー プログラムをロードしてコンパイルすることです。Derelict3GL.reload()しかし、これには、コンテキストなしで実行することを拒否するシェーダー拡張機能が必要でした...

だから、私はこのハックハックを使用しました:

auto tmpWindow=glfwCreateWindow(1,1,"",null,null);
glfwMakeContextCurrent(tmpWindow);
DerelictGL3.reload();
glfwDestroyWindow(tmpWindow);

これで動作します。シェーダー プログラムロードしてコンパイルし、実際のウィンドウを開くことができるようになりました。しかし、これは私には少しハックすぎるようです。コンテキストを偽造する、またはコンテキストなしで拡張機能をロードする適切な方法はありますか?

4

1 に答える 1