2011-07-23 13 views
5

情報をコンソールに出力する場所でOpenGLを実行できるデバッグモードがありますか?私は、多くのマシンでうまく動作するアプリを持っていますが、本当に重要なマシンでは悲惨に失敗します。私はそのマシンに直接アクセスすることができないので、どのように失敗しているのか把握しようとしています。現在のところ、コンソールには出力がありません。アプリケーションはもともとはコンソールのないWindowsアプリケーションであったので、プロジェクトのプロパティでコンソールに切り替えました。また、重要であれば、表示されないオブジェクトもあれば、アニメートされないオブジェクトもあります。これは意味をなさないものです。コンソールへのOpenGLデバッグまたは冗長情報

答えて

7

本当にそうではありません。 OpenGLのフックを書いて、それが何か冗長な出力を実際に望むなら、gDEBuggerのようなツールであるすべての呼び出しを記録しなければならないでしょうが、かなりの作業が必要です(それにはGLInterceptのようなものを使うことができます)。 )個人的な経験から:最も簡単なのはおそらく問題のマシンにアクセスしてgDEBuggerを実行するか、それと同等のマシンを手に入れて、グラフィックスデバッガを接続してエラーを再現できるようにすることです。

また、ARB_debug_outputという拡張子を使用することもできます。これは、理論的には、より多くの出力を提供する必要があります。実際には、それぞれのOpenGL APIコールの後にglGetErrorコールがあります。これは、ユースケースに十分な場合があります(つまり、GL状態を破る何かを行うだけです)。デバッグ出力拡張機能を使用するには、デバッグコンテキストを作成するアプリケーション。

+1

ARB_debug_outputのユーティリティは、OpenGLの実装によって異なります。 NVIDIAは基本的に 'glGetError'バージョンを提供していますが、AMDのバージョンはかなり役立ちます。それは単にあなたに "GL_INVALID_OPERATION"を逆戻りさせるだけではありません。それはそれを引き起こした関数のような有用な情報を一般に教えてくれます。私はそれがコアコンテキストで廃止された関数呼び出しを具体的に認識しているのを見ました。シェーダのコンパイルとリンクのエラーは、失敗すると適切なログをダンプします。その他 –

+0

'ARG_debug_ouput'はバージョン4.3以降のコア仕様の一部です。 –

関連する問題