読者です 読者をやめる 読者になる 読者になる

OpenGLコマンドをダンプして取り出す

Linux Tips PC OpenGL

件名のとおりですが、諸事情あってOpenGLのコマンドを実行順に引数と合わせて出力したいことがありました。

ソースが無いアプリケーションだと、DLL(so)を誤魔化してgl系のAPIをhookするのが一般的な様ですが、今回はソースがあったので取りあえずwrapperを書いてやるかとゴリゴリ書いていたのですが。。。

一日かけても必要なAPI分何とか出来た程度であーこりゃこりゃ。後々のことを考えると、真面目に使えるように直した方がと思ったら、滅茶苦茶高機能なツールがフリーで公開されていました。

graphicREMEDY-gDEBugger

取りあえずWindows環境で動かないと困るのでちょっと試してみました。

手元に簡単なアプリケーションが無いので、こちらから拝借。

f:id:moguriso:20120425041255p:plain

何もしないと↑が表示される。

gDEBuggerを起動して、Free Licenseの登録(氏名、社名、E-mail、電話番号)。
再度起動するとこんなウィンドウが開く。

f:id:moguriso:20120425041551p:plain

[Create new project...]して

f:id:moguriso:20120425041637p:plain

とりあえず[OpenGL]に。*1

f:id:moguriso:20120425041742p:plain

さっきのアプリケーションを[Executable for debug session]に登録する。

f:id:moguriso:20120425041900p:plain

Swapに追加して、取りあえずglFinishとglFlushを入れておいたりする。*2

f:id:moguriso:20120425042032p:plain

赤丸ボタンを押すとキャプチャーモードに入る。緑三角を押すとアプリケーションが起動。
適度に動かしてから、黒四角を押して停止。

赤丸の右隣のレポートボタンを押すと↓な感じに出力されます。
f:id:moguriso:20120425042257p:plain

は、は、は、、、一日無駄にした。。。 orz

*1:OpenCLまでトレース出来るとは...と思ったが、同じステートマシン構造なので理屈は一緒か。。。

*2:ユースケースだと、この辺アプリ側を改変する必要がありそうでこれはちょっと凹む。。