D3DHAL_CONTEXTCREATEDATA 结构 (d3dhal.h)
D3DHAL_CONTEXTCREATEDATA 结构包含 D3dContextCreate 函数创建新上下文所需的所有信息。
语法
typedef struct _D3DHAL_CONTEXTCREATEDATA {
union {
LPDDRAWI_DIRECTDRAW_GBL lpDDGbl;
LPDDRAWI_DIRECTDRAW_LCL lpDDLcl;
};
union {
LPDIRECTDRAWSURFACE lpDDS;
LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl;
};
union {
LPDIRECTDRAWSURFACE lpDDSZ;
LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl;
};
union {
DWORD dwPID;
ULONG_PTR dwrstates;
};
ULONG_PTR dwhContext;
HRESULT ddrval;
} D3DHAL_CONTEXTCREATEDATA;
成员
lpDDGbl
驱动程序结构 (旧版) 。
lpDDLcl
指向应用程序必须创建的 DirectDraw 对象,以便检索 Direct3D 的 COM 接口。 这允许在 DirectDraw 应用程序和驱动程序之间共享上下文信息。 lpDDLcl 是应用程序上下文和驱动程序上下文之间的常见绑定因素。 它指向一个 DD_DIRECTDRAW_LOCAL 结构,该结构用于标识属于给定 Direct3D 上下文且仅与当前 DirectDraw 进程相关的图面。 lpDDLcl 是必需的,因为图面 (例如,在驱动程序中创建 Direct3D 上下文之前,可以先创建深度缓冲区、呈现缓冲区和纹理) 。
lpDDS
要用作目标的图面。
lpDDSLcl
指向描述要用作呈现目标的 DirectDraw 图面的 DD_SURFACE_LOCAL 结构。
lpDDSZ
要用作 Z 的图面。
lpDDSZLcl
指向描述要用作深度缓冲区的 DirectDraw 图面的DD_SURFACE_LOCAL结构。 如果此成员为 NULL,则不执行深度缓冲。
dwPID
指定当前进程 ID。 这是启动创建 Direct3D 设备的 Direct3D 应用程序的进程 ID。
dwrstates
指向驱动程序在从命令缓冲区分析呈现状态命令时应更新的呈现状态数组。 数组缓冲区必须足够大,至少包含指定数量的 ULONG 值。
dwhContext
指定一个位置,该位置指示输入时 Direct3D 用户模式运行时的版本,并在输出中指示驱动程序在成功创建上下文时返回上下文句柄的位置。 有关更多信息,请参见备注。
ddrval
指定驱动程序写入 D3dContextCreate 返回代码的位置。 返回代码D3D_OK表示成功。 D3DHAL_OUTOFCONTEXTS的返回代码指示驱动程序无法创建上下文。 有关详细信息,请参阅 Direct3D 驱动程序回调的返回代码。
注解
当 Direct3D 运行时调用驱动程序的 D3dContextCreate 函数时,运行时会指定一个数字,该数字指示 dwhContext 成员中的运行时的用户模式版本。 下表显示了数字和用户模式版本的映射。
Number | DirectX 用户模式版本 |
---|---|
5 | 9.0 |
4 | 8.0 |
3 | 7.0 |
2 | 6.0 |
1 | 5.0 |
0 | 3.0 |
如果驱动程序成功创建上下文,驱动程序将在 dwhContext 中返回上下文 ID,供 Direct3D 运行时在与驱动程序通信时使用。
要求
要求 | 值 |
---|---|
Header | d3dhal.h (包括 D3dhal.h) |