次の方法で共有


プライベート サーフェス データ (Direct3D 9)

サーフェスにはあらゆる種類のアプリケーション固有のデータを格納できます。たとえば、ゲーム内のマップを表すサーフェスには地形に関する情報を含めることができます。

サーフェスは、複数のプライベート データ バッファーを含むことができます。各バッファーは、データをサーフェスにアタッチするときに指定する GUID によって識別されます。

プライベート サーフェス データを格納するには、SetPrivateData を使用してソース バッファーへのポインター、データのサイズ、およびデータに対してアプリケーションが定義した GUID を渡します。オプションで、ソース データを COM オブジェクトの形式にすることができます。この場合、オブジェクトの IUnknown インターフェイスへのポインターを渡し、D3DSPD_IUNKNOWNPOINTER フラグを設定してください。

SetPrivateData は、データに対して内部バッファーを割り当てて、これをコピーします。これによって、ソース バッファーまたはオブジェクトを安全に解放できます。内部バッファーまたはインターフェイスのリファレンスは、FreePrivateData の呼び出し時に解放されます。これは、サーフェスの解放時に同時に発生します。

サーフェスのプライベート データを取得するには、正しいサイズのバッファーを割り当てて、GetPrivateData メソッドを呼び出し、そのデータに割り当てられた GUID を渡す必要があります。このバッファーに使用する動的メモリーの解放は、開発者が行う必要があります。データが COM オブジェクトの場合、このメソッドは IUnknown へのポインターを取得します。

どのくらい大きなバッファーを割り当てるかわからない場合は、まず pSizeOfData にゼロを指定して GetPrivateData を 呼び出してください。メソッドが D3DERR_MOREDATA で失敗した場合、これはバッファーに必要なバイト数を返します。