これを妥当な例に減らす前に、誰かがこの問題に遭遇した可能性があり、問題を明らかにすることを望んでいました。Vista/7のOpenGL最大32画面画面
私はウィンドウごとに1つのOpenGLコンテキストを使用する32ビットのCベースのアプリケーションがあり、すべてのコンテキストとウィンドウは同じように設定されています。要求されたピクセルフォーマットは、32ビットカラー、アルファ、デプスバッファ、アクセラレーション済みです。 Windows 2000とXPでは、すべてが完璧に機能します。
33番目のウィンドウ/コンテキストのペアが作成されるまで、すべてVistaと7で完全に機能します。ウィンドウの作成にはエラーはありません。コンテキストにはエラーはなく、コンテキストには現在のエラーはなく、描画にはエラーはなく、SwapBuffersはエラーを生成しません。しかし、OpenGLのコンテキストでは出力が生成されず、Aeroではウィンドウが白く、古典的なモードでは描画されず画面のゴミだけになります。 DWMを強制終了しても問題は解決されず、異なるピクセル形式(単一バッファ、差分など)が試されますが、PFD_SUPPORT_COMPOSITIONは問題を解決しません。これは、Vista/7を搭載した数多くの異なるマシン上にあり、決してXPではありません。
バックバッファをglReadPixelsでき、それらは正しいピクセルです。同じコンテキストでpbufferにレンダリングすると問題はなくなりますが、> 32 pbuffersにレンダリングしても問題ありません。
画面上のコンテキスト/ウィンドウの操作を自由にすると、動作していないウィンドウが再び機能し始めます。これは、32個のウィンドウが画面上に表示された後、Vista/7が単にOpenGLレンダリングの表示を停止しているかのようです。
ピクセルフォーマット記述子にPFD_SUPPORT_GDIが含まれている場合は、すべて正常ですが、受け入れられないソフトウェアレンダラーを使用しています。
これがVista/7のOS制限またはドライバ制限であるかどうか疑問に思っています。どんな洞察もありがとう。
とかなり似ている
注意行動は何ですか? – Luca
これは、これが責任を負う特定のドライバ実装だと思われます。あなたは複数のカード/メーカーで同じ動作をしていますか? – eodabash