PFND3D11DDI_DRAWINSTANCEDINDIRECT回调函数 (d3d10umddi.h)
DrawInstancedIndirect 函数绘制非索引基元的特定实例。
语法
PFND3D11DDI_DRAWINSTANCEDINDIRECT Pfnd3d11ddiDrawinstancedindirect;
void Pfnd3d11ddiDrawinstancedindirect(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3
)
{...}
参数
unnamedParam1
hDevice [in]
显示设备的句柄 (图形上下文) 。
unnamedParam2
hBufferForArgs [in]
缓冲区的句柄,该缓冲区包含要处理的 DrawInstancedIndirect 参数。 缓冲区包含以下紧密打包的结构:
struct DrawInstancedIndirectArgs {
UINT VertexCountPerInstance;
UINT InstanceCount;
UINT StartVertexLocation;
UINT StartInstanceLocation;
}
有关这些参数的详细信息,请参阅 DrawInstanced 参考页。
unnamedParam3
AlignedByteOffsetForArgs [in]
hBufferForArgs 指定的缓冲区中的偏移量(以字节为单位)。 AlignedByteOffsetForArgs 必须是四的倍数。
返回值
无
备注
驱动程序可以使用 pfnSetErrorCb 回调函数来设置错误代码。
DrawInstancedIndirect 函数执行与调用驱动程序的 DrawInstanced 函数相同的任务。 但是, DrawInstancedIndirect 从 hBufferForArgs 参数指定的缓冲区的内容中获取有关非索引基元的信息。 DrawInstancedIndirect 从 AlignedByteOffsetForArgs 参数指定的字节偏移量开始读取缓冲区的内容。
当 Direct3D 运行时调用驱动程序的 CreateResource (D3D11) 函数来创建 hBufferForArgs 参数指定的缓冲区资源时,运行时必须在 D3D11DDIARG_CREATERESOURCE 结构的 MiscFlags 成员中设置 D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS 标志。
驱动程序不应遇到任何错误,D3DDDIERR_DEVICEREMOVED除外。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递除D3DDDIERR_DEVICEREMOVED以外的任何错误,则 Direct3D 运行时将确定错误严重。 即使删除了设备,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备移除干扰 DrawInstancedIndirect (通常不应) 的操作,驱动程序可以返回D3DDDIERR_DEVICEREMOVED。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 7 操作系统开始支持 DrawInstancedIndirect。 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |