グラフィックスRAMをウィンドウに直接表示する方法はありません。ウィンドウは、表示されているものを制御しながらこれを行うことを防ぎます。
ただし、DirectXデバイスを作成することはできません。バックバッファー面を取得してロックします。ロック後、あなたはそれをあなたが欲しいものでいっぱいにしてから、ロックを解除してプレゼントに電話することができます。ただし、ビデオメモリをバスを介してメインメモリにコピーする必要があるので、これは遅いです。一部のカードでは、「スウィズル」形式も使用されます。これはそれを行うためにさらに時間を追加し、いくつかのカードはそれを行うことからあなたを禁止するでしょう。
一般的に、ビデオカードに直接アクセスしてWindows/DirectXで描画するのを避けたいとします。 D3D1x Imの下では、あなたはIDXGIOutputを介してそれを行うことができます。しかし実際には避けようとするものです。
標準のwin32(この例はCと仮定します)ではなく、かなり複雑です。
まず、リニアアレイが必要です。
unsigned int* pBits = malloc(width * height);
次に、ビットマップを作成してDCに選択する必要があります。
HBITMAP hBitmap = ::CreateBitmap(width, height, 1, 32, NULL);
SelectObject(hDC, (HGDIOBJ)hBitmap);
あなたが好きなようにpBits配列を記入することができます。終了したら、ビットマップのビットを設定することができます。
::SetBitmapBits(hBitmap, width * height * 4, (void*)pBits)
ビットマップの使用が終了したら、それを削除することを忘れないでください(DeleteObjectを使用)。そして、リニアアレイを解放してください!
編集:ビデオRAMを確実に取得する方法は1つだけあり、DX Diagインターフェイスを経由することです。 DX SDKでIDxDiagProviderとIDxDiagContainerを見てください。
出典
2009-12-08 11:42:12
Goz
**グラフィックスRAM **にアクセスしたいのですか、または**グラフィックスアダプターの** RAM量**を取得しますか? – atzz
グラフィックスRAMの量を欲しいだけです。 – amritad