4
D3DXSaveSurfaceToFileを使用せずに、DirectX 9の画面をメモリの未加工ビットマップにキャプチャする方法
OpenGLでこのようなことができることを知っています glReadBuffer( GL_FRONT ); glReadPixels( 0, 0, _width, _height, GL_RGB, GL_UNSIGNED_BYTE, _buffer ); そして、かなり高速です。_bufferに生のビットマップを取得します。DirectXでこれを実行しようとすると、D3DDeviceオブジェクトがあると仮定すると、次のようなことができます if (SUCCEEDED(D3DDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackbuffer))) { HResult hr = D3DXSaveSurfaceToFileA(filename, D3DXIFF_BMP, pBackbuffer, NULL, NULL); しかし、D3DXSaveSurfaceToFileはかなり遅く、キャプチャをディスクに書き込む必要がないので、これを行うためのより高速な方法があるかどうか疑問に思っていました。 編集:私はDirectXアプリケーションのみを対象としています。実際にはDX9アプリ。私はプレゼントへのフックを介してこれを行っています。(必要に応じて迂回を使用しています)、すべてのフレームでこれを実行しています。BMP PNG JPEGなどの特定のビットマップ形式は必要ありません(または必要ありません)。RGB24の色空間は問題ありません。YUV480pとして取得する方が良いでしょうが、絶対に必要というわけではありません。非常に役立つ回答をありがとうございました