プライベート Surface データ (Direct3D 9)
サーフェスを使用して、任意の種類のアプリケーション固有のデータを格納できます。 たとえば、ゲーム内のマップを表すサーフェスには、地形に関する情報が含まれている場合があります。
1 つのサーフェスに複数のプライベート データ バッファーを含めることができます。 各バッファーは、データをサーフェスにアタッチするときに指定する GUID によって識別されます。
プライベート サーフェス データを格納するには、SetPrivateData を使用し、ソース バッファーへのポインター、データのサイズ、およびデータのアプリケーション定義 GUID を渡します。 必要に応じて、ソース データを COM オブジェクトの形式で存在させることができます。この場合、オブジェクトの IUnknown インターフェイス ポインターへのポインターを渡し、D3DSPD_IUNKNOWNPOINTER フラグを設定します。
SetPrivateData は、データの内部バッファーを割り当ててコピーします。 その後、ソース バッファーまたはオブジェクトを安全に解放できます。 FreePrivateData が呼び出されると、内部バッファーまたはインターフェイス参照が解放されます。 これは、サーフェスが解放されたときに自動的に発生します。
サーフェスのプライベート データを取得するには、適切なサイズのバッファーを割り当ててから GetPrivateData メソッドを呼び出し、データに割り当てられた GUID を渡す必要があります。 このバッファーに使用する動的メモリを解放する必要があります。 データが COM オブジェクトの場合、このメソッドは IUnknownポインターを取得します。
割り当てるバッファーの大きさがわからない場合は、最初に pSizeOfData で GetPrivateData を 0 で呼び出します。 メソッドがD3DERR_MOREDATAで失敗した場合は、バッファーに必要なバイト数が返されます。
関連トピック
-
Direct3D サーフェス の