2

openGL の特定の機能を使用したいのですが、ビジュアル コンテンツのレンダリングに関連するものは何もありません。依存関係なしで作成する方法はありますか (Windows や一部のパッケージ [SDL、SFML、GLUT] には依存しません)。私が使用している GLEW のように、外部ライブラリを持たないライブラリのみが許可されます。

4

2 に答える 2

5

あなたがやりたいことは、一般的にオフスクリーンレンダリングとして知られています。理論的には完全に可能ですが、実際の実装には多くの注意点があります。すべての主要な高性能実装で最も重要なこと:レンダリングウィンドウが表示されていない場合でも、グラフィックシステムを実行してアクティブにし、プログラムをこのグラフィックシステムの環境で実行する必要があります。

Windowsで最も簡単な方法は、非表示のウィンドウを作成することです。CreateWindowExで作成したウィンドウだけで、ShowWindowでマップすることはできません。そのためのイベント処理ループも必要ありません。このウィンドウでは、通常どおりOpenGLコンテキストを作成しますが、ウィンドウのフレームバッファにレンダリングする代わりに、フレームバッファオブジェクトにレンダリングします。

X11 / GLXでは、さらに簡単です。X11/ GLXは拡張機能のないPBuffersを提供します(WindowsにもPBuffersがありますが、PBuffersを作成するには、最初に通常のOpenGLコンテキストが必要です)。したがって、X11では、プロキシウィンドウなしでPBufferを作成できます。PBuffer自体をオフスクリーンバッファとしてレンダリングできます。フレームバッファオブジェクトは、実装がそれらをサポートしている場合、PBufferでも機能します。Windowsの場合と同様に、フレームバッファオブジェクトで非表示のウィンドウを使用することもできます。いずれにせよ、現在のドライバーではX11がアクティブでバインドされたコンソールである必要があるため、バックグラウンドで追加のXサーバーを起動してオフスクリーンレンダリングをそこで実行することはできませんが、これはドライバーの制限であり、X11の制限ではありません、GLXまたはOpenGL。

許可されているライブラリは、私が使用しているGLEWのように、外部ライブラリがないライブラリのみです。

GLEWをプログラムに静的にリンクできます。あなたが筋金入りの場合、手動で拡張機能の読み込みを行うことができますが、なぜそれをしたいのですか?

于 2011-09-24T19:26:12.720 に答える
1

静的にリンクしてコンテキストを作成できる、最も軽量なクロスプラットフォーム ライブラリは何ですか。

「最軽量」をどのように定義しますか?

OpenGL ウィンドウの作成以外にほとんど機能しない 2 つのクロスプラットフォーム ライブラリは、FreeGLUTGLFWです。

FreeGLUT には約 5.2MB のディストリビューション (解凍後) があり、GLFW には 2.6MB のディストリビューションがあります。それで「軽くなる」の?FreeGLUT のコンパイル済みスタティック ライブラリは、VS2008 のリリース モードで約 500KB です。同様のコンパイルでGLFW用のものは120KBです。それで「軽くなる」の?

于 2011-09-24T19:35:45.130 に答える