PFND3D10DDI_SETVIEWPORTS回调函数 (d3d10umddi.h)

SetViewports 函数设置视区。

语法

PFND3D10DDI_SETVIEWPORTS Pfnd3d10ddiSetviewports;

void Pfnd3d10ddiSetviewports(
       D3D10DDI_HDEVICE unnamedParam1,
  [in] UINT NumViewports,
  [in] UINT ClearViewports,
       const D3D10_DDI_VIEWPORT *unnamedParam4
)
{...}

参数

unnamedParam1

hDevice [in]

显示设备的句柄(图形上下文)。

[in] NumViewports

pViewports 参数指定的视区总数。

[in] ClearViewports

NumViewports 指定 为 NULL的视区数之后的视区数。 此数字表示以前的视区数(即,Microsoft Direct3D 运行时之前调用 SetViewports)和新数量的视区之间的差异。

请注意,ClearViewports 指定的数字只是优化帮助,因为用户模式显示驱动程序可以计算此数字。

unnamedParam4

pViewports [in]

要设置视区 D3D10_DDI_VIEWPORT 结构的数组。

返回值

没有

言论

驱动程序可以使用 pfnSetErrorCb 回调函数来设置错误代码。

视区指定输出呈现目标和深度模具资源的转换后剪辑。 调用 setViewports 时未定义的任何视区都设置为 NULLNULL 视区的定义如下。

struct D3D10_DDI_VIEWPORT {
  FLOAT  TopLeftX = NaN;
  FLOAT  TopLeftY = NaN;
  FLOAT  Width = NaN;
  FLOAT  Height = NaN;
  FLOAT  MinDepth = NaN;
  FLOAT  MaxDepth = NaN;
} D3D10_DDI_VIEWPORT;</pre>

此定义意味着视区已关闭。

用户模式显示驱动程序必须以原子方式将所有视区设置为一个作。

尽管 NumViewports 参数指定 pViewports 参数指定的数组中的视区数,但数组中的某些值可以 NULL

NumViewports 指定的数量和允许的最大视区数之间的视区范围,必须包含所有 NULL 或未绑定值。 ClearViewports 参数指定的数字告知驱动程序驱动程序当前原子作必须清除的视区数。

如果上一次调用 SetViewportsNumViewports 参数中传递了值 2,并且对 SetViewports 的当前调用 传递值 在 NumViewports中为 4,则对 SetViewports 的当前调用还会在 ClearViewports 参数中传递值 0。 如果对 SetViewports 的下一个连续调用 传递 NumViewports中的值 1,则连续调用在 ClearViewports中传递值 3(4 - 1)。

当用户模式查询作期间请求清除视区的值时,该值是视区的最大数目与视区值之间的差异。

SetViewports 可确保视区有效。 也就是说,SetViewports 可确保视区的尺寸在范围内(D3D10_VIEWPORT_BOUNDS_MIN、D3D10_VIEWPORT_BOUNDS_MAX、D3D10_MIN_DEPTH和D3D10_MAX_DEPTH)。 SetViewports 还可确保无坐标为 NaN,并将非规范化浮点值刷新为零。

驱动程序不应遇到任何错误,除非D3DDDIERR_DEVICEREMOVED。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递任何错误(D3DDDIERR_DEVICEREMOVED除外)时,Microsoft Direct3D 运行时将确定错误至关重要。 即使设备已删除,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除干扰了 SetViewports 的作(通常不应发生),驱动程序可以返回D3DDDIERR_DEVICEREMOVED。

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的 Windows作系统中可用。
目标平台 桌面
标头 d3d10umddi.h (包括 D3d10umddi.h)

另请参阅

D3D10DDI_DEVICEFUNCS

D3D10_DDI_VIEWPORT

pfnSetErrorCb