在立体声中呈现并通知立体声状态

除非操作系统指示应用启用立体 3D 显示行为,否则应用无法以立体声呈现。 应用确定是否以不同的方式呈现立体 3D,具体取决于它们是窗口化还是全屏呈现。

窗口化应用调用 IDXGIFactory2::IsWindowedStereoEnabled 方法确定是否以立体声呈现。 全屏应用调用 IDXGIOutput1::GetDisplayModeList1 方法,然后确定返回的任何显示模式是否支持在立体声中呈现。 GetDisplayModeList1 方法不枚举立体声模式,除非在 Flags 参数中指定DXGI_ENUM_MODES_STEREO标志。 支持立体声的窗口化或全屏应用首先根据对 IDXGIFactory2::IsWindowedStereoEnabledIDXGIOutput1::GetDisplayModeList1 方法的调用确定在立体声中呈现,然后注册立体声状态更改的通知。 由于应用不能依赖通知来指示立体 3D 显示行为的当前状态,因此当它收到通知事件或窗口消息时,它必须再次调用 IDXGIFactory2::IsWindowedStereoEnabledIDXGIOutput1::GetDisplayModeList1 来确定操作系统的立体 3D 显示行为的当前状态。

如果要在立体声中呈现,则必须注册立体声通知,以了解用户何时关闭或打开立体声行为。 应用可以通过向窗口发送消息或通过事件信号进行注册,以接收有关立体 3D 状态更改的通知。 为了注册以接收有关立体声状态更改的窗口的通知消息,应用调用 IDXGIFactory2::RegisterStereoStatusWindow 方法。 若要注册以通过事件信号接收立体声状态更改通知,应用调用 IDXGIFactory2::RegisterStereoStatusEvent 方法。 这两种方法都返回指向键值的指针,应用可以使用该键值取消注册通知。 若要取消注册通知,应用会将此键值传递给 IDXGIFactory2::UnregisterStereoStatus 方法。

立体声状态可以包含以下元素:

  • 用户配置。

    Windows 用户可以使用控制面板的“更改显示设置”中的“启用立体 3D”选项启用或禁用立体声显示。

  • 计算机功能和配置,包括图形适配器、图形驱动程序和监视器设置。

Direct3D 11.1 简单立体声 3D 示例演示如何添加立体 3D 效果以及如何响应系统立体声更改。

DXGI 1.2 改进