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