IDirect3DVertexBuffer9 有这些方法
STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags) PURE
STDMETHOD(Unlock)(THIS) PURE
我不知道这些功能的内部实现。我确实期待下一个。
'Lock' 方法将 VertexBuffer 的视频内存映射到 ppbData。它获得了更多的性能。
'Lock' 方法是分配一个系统内存并使 ppbData 指向它。而“解锁”方法就是将该内存复制到真正的视频内存中。这种通过在硬件中放置抽象层的方法消除了差异。
我猜想:在'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 模式下实现。帮帮我~~