2011-01-25 7 views
0

私は、宇宙船のホールを横切る人を動かすアプリケーションを持っています。私は、アプリケーションがリンクするOpenGL DLLも作成しました。このOpenGL DLLの目的は、特定の呼び出しをインターセプトし、これらの呼び出しがインターセプトされたときに何かを行うことです。オブジェクトをテクスチャリングするときにOpenGLアプリケーションがフェードします

私が傍受を心配している主要な呼び出しはwglSwapBufferです(私はthatsという名前です)。この呼び出しでは、3Dオブジェクト(半球または半円筒)をレンダリングし、各頂点のテクスチャ座標を指定します。次に、フレームバッファの出力をキャプチャし、glCopyTexImage2Dなどを使用して球の内容をテクスチャに使用します。

私はすべてのことをやった後、私のDLLは、実際のDLLと実際のスワップバッファーメソッドと呼ばれる呼び出されます。

私はアプリケーションと同じフォルダにdllを置くと、グラフィックスの上にテクスチャが描かれたドームがあると思います。私が期待していなかったのは、画面が恒常的に消えるということです。私はそれが意味することは、すべてのものが想定どおりに見え、その後2番目の間隔で、画面が完全に黒くなるまで消えてしまい、それが正常に戻ってくるということです。これは約1秒の平均頻度で繰り返されます。時には速く、時には遅くなる場合もありますが、プロセッサが動作していることに依存しているようです。

アイデア?

+0

私はスクリーンをクリアし、サイズを変更し、オブジェクトとテクスチャをにレンダリングします。私は画面やサイズを変更したり、テクスチャをいけない場合は、アニメーションは正常に見えますが、スワップバッファメソッドでそれをテクスチャ化せずに3Dオブジェクトを描画すると、アニメーションはまだ通常のように見えますが、画面の中央定期的に退色するオブジェクトが表示されます。 – Adham

+0

DLLで変更したGL状態を復元するようにしていますか? – genpfault

+0

状態別に、有効になっているものを無効にすることを意味しますか? – Adham

答えて

1

それは、ブレンドに何かをもたらしました。だから、swapbufferメソッドでは、ブレンドを無効にして、自分のものを行い、ブレンドを再度有効にしました。

関連する問題