複数のOpenGLコンテキストがあり、それぞれが独自のプロセスであれば、ドライバは何らかの形でデバイスを仮想化するので、各プログラムはGPUを排他的に実行すると考えます。つまり、1つのプログラムがglEnable
を呼び出すと、もう1つのプログラムはそれに気づくことはありません。OpenGLですべての状態を一度に保存できますか?
これは、それ以外の場合には、保存状態とそれ以降に復元するためにglGet
トンの呼び出しで行うことができます。明らかに、ドライバはより効率的にそれを行います。しかし、ユーザー空間では、ステートに加えた変更を追跡し、それらを選択的に処理する必要があります。たぶん私は何かが欠落しているかもしれませんが、フレームバスのためにViewportを調整し、以前の状態に変更を取り消すだけの方がいいと思っていました。
コンテキストスイッチの効果を単一のプログラム内で達成する方法がありますか?
さて、同じプログラム内で複数のGLコンテキストを使用するだけで、お互いに状態を分けることができます。このようなコンテキストは実際のオブジェクトを共有できるため、同じデータを操作することはできます。 – derhass