0

C++ で Windows 8.1 上の Qt5.4 を使用して 3D アプリケーションへのインターフェイスを作成しています。アプリケーションは、glLoadGen を使用して OpenGL 関数をロードしています。

問題はありません。glWidget と glLoadGen の両方を、gl.h を含める前に含める必要がありますが、どちらもある時点で gl.h を含めます。一見、両方を同時に使用しているファイルをコンパイルすることは不可能です。

一部のラッパーを使用すると、この問題を回避できる場合がありますが、そうしないことをお勧めします。この問題に対する明確な解決策はありますか?

4

1 に答える 1

1

クリーンな解決策は、懸念事項を分離することです。Qt を使用する Qt とやり取りするソース ファイルを 1 つ用意します。次に、glLoadGen のものを使用して、OpenGL と対話する別のソース ファイルを作成します。

概念的に両方を必要とする関数がある場合は、GL と対話する必要があるときに OpenGL 対話コードで関数を呼び出すようにします。したがって、ウィンドウのサイズ変更時にビューポートを変更する場合は、Qt コードでサイズ変更を検出し、OpenGL と対話するコードに移動して実際に を呼び出す関数を呼び出しますglViewport

そうすれば、Qt から切り替える必要がある場合でも、Qt と対話するコードを置き換えるだけで済みます。


そうは言っても、glLoadGen は実際には OpenGL ロード ライブラリではありません。これは、OpenGL ロード ライブラリのジェネレーターです。拡張可能なプラットフォームです。したがって、UI コード内にレンダリング コードを挿入することが非常に重要である場合 (一般的に言えば、これは不適切な形式です)、実際に Qt と互換性のあるジェネレーター スタイルを作成できます。

もちろん、glLoadGen スタイルの作成は簡単ではありません。Lua スクリプトの知識と、生成システムが実際にどのように機能するかを熟読する必要があります。

于 2015-12-24T16:03:38.933 に答える