以下是 IDirect3DDevice9 接口的定义:
// 定义在头文件 <d3d9.h> 中
class IDirect3DDevice9 : public IUnknown
{
public:
// 获取设备的能力信息
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) = 0;
virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
// 设置渲染状态
virtual HRESULT STDMETHODCALLTYPE SetRenderState(D3DRENDERSTATETYPE State, DWORD Value) = 0;
// 创建顶点缓冲
virtual HRESULT STDMETHODCALLTYPE CreateVertexBuffer(
UINT Length,
DWORD Usage,
DWORD FVF,
D3DPOOL Pool,
IDirect3DVertexBuffer9** ppVertexBuffer,
HANDLE* pSharedHandle
) = 0;
// 设置顶点缓冲
virtual HRESULT STDMETHODCALLTYPE SetStreamSource(
UINT StreamNumber,
IDirect3DVertexBuffer9* pStreamData,
UINT OffsetInBytes,
UINT Stride
) = 0;
// 设置顶点着色器
virtual HRESULT STDMETHODCALLTYPE SetVertexShader(IDirect3DVertexShader9* pShader) = 0;
// 设置像素着色器
virtual HRESULT STDMETHODCALLTYPE SetPixelShader(IDirect3DPixelShader9* pShader) = 0;
// 绘制图元
virtual HRESULT STDMETHODCALLTYPE DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
) = 0;
// 其他方法...
};
这个接口主要包括以下几个关键方法:
- QueryInterface, AddRef, Release: 用于实现 COM 接口的基本功能,进行接口查询和引用计数。
- SetRenderState: 设置渲染状态,例如混合模式、剔除模式等。
- CreateVertexBuffer: 创建顶点缓冲对象,用于存储顶点数据。
- SetStreamSource: 设置顶点缓冲数据流。
- SetVertexShader, SetPixelShader: 设置顶点着色器和像素着色器。
- DrawPrimitive: 绘制基本图元,如点、线、三角形等。
通过调用这些方法,你可以配置和执行图形渲染流程。在使用完毕后,同样需要调用 Release 方法释放 IDirect3DDevice9 接口的资源,以避免内存泄漏。
转载请注明出处:http://www.zyzy.cn/article/detail/26249/Win32 API/D3d9helper.h/IDirect3DDevice9