IDirect3DVertexBuffer9は方法Direct3DのVertexBufferロック()と異なるD3DPOOLによって実装ロック解除()関数
STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags) PURE
STDMETHOD(Unlock)(THIS) PURE
が、私はこれらの関数の内部実装を知らないことがあります。 私は次のことを期待しています。
「ロック」メソッドは、VertexBufferのビデオメモリをppbDataにマップします。それは多くのfaterの性能を得る。
「ロック」メソッドは、システムmemを割り当て、それを指すようにppbDataを作成します。そして、 'UnLock'メソッドは、そのメモリを実際のビデオメモリにコピーします。ハードウェアに抽象化レイヤーを配置することで、このアプローチは違いを排除します。
私は推測する: 'D3DPOOL_SYSTEMMEM' モードで が、それはD3DPOOL_DEFAULT 'モードで道2 によって実装、それは仕方1.
/* Pool types */
typedef enum _D3DPOOL {
D3DPOOL_DEFAULT = 0,
D3DPOOL_MANAGED = 1,
D3DPOOL_SYSTEMMEM = 2,
D3DPOOL_SCRATCH = 3,
D3DPOOL_FORCE_DWORD = 0x7fffffff
} D3DPOOL;
によって実装が、私は知りませんすべてのD3DPOOLモードでどのように実装されていますか。フルスクリーンデバイスがフォーカスを失って、デバイスが「失われた」(D3DERR_DEVICENOTRESETまたはD3DERR_DEVICELOST)であるとき は~~ D3DPOOL_DEFAULTで