私はこのコードを持っています
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
これは、私が試したすべてのNvidiaおよびAMD GPUで完全に機能しますが、試したほとんどすべてのIntelビルトインビデオでは失敗します。それは実際には非常に古い945GMEで動作しますが、他のすべてでは失敗します。スクリーンショットを取得する代わりに、実際には黒い画面が表示されます。
それが役に立てば、私はDoom3エンジンを使用しており、そのコードは組み込みのスクリーンキャプチャコードから派生しています。ちなみに、元のゲームでもインテルデバイスでの画面キャプチャはできません。私の推測では、彼らは標準を正しく実装していません。これの回避策はありますか?
1
失敗したインテルの内蔵ビデオチップセットの具体的な例をいくつか教えていただけますか?同じことを話していると確信しているからです。(ちなみに、私のコードはあなたのコードと非常によく似ています)
—
Trevor Powell、
私はIntel 945,965、GMA HDを使用していましたが、どちらも機能しませんでした。彼らはいくつかのインスピロン1525にあり、別のインスピロン1764にありました。動作したのは、Acer Aspire One 110Lの非常に古いIntel 950でした。修正できましたか?
—
cloudraven
GL_BACKバッファから読み取る必要があるのでしょうか?OpenGLのマンページには、これがダブルバッファモードのデフォルトであると記載されています。しかし、参考までに、上記のコード(GL_FRONTまたはGL_BACKを使用)はIntel HDカードで機能しました。
—
QuasarDonkey 2012年
明日やってみます。奇妙なことですが、これは未定義の動作ではないでしょうか?まあ、私はそれをインテルカードでのみ発生させることができます。
—
cloudraven 2012年
Cloudraven、ReadPixelsを呼び出す前にバックバッファーがクリアされる可能性のあるケースがないか、tr_backend.cppからRB_ExecuteBackEndCommandsを確認します。
—
2012年