【问题标题】:What do Windows DCs and GLRCs correspond to?Windows DC 和 GLRC 对应什么?
【发布时间】:2012-09-20 20:58:56
【问题描述】:

DC 对应于 Windows 中的什么?我知道我可以从 HWND 或 HMONITOR 获得 HDC。这是否意味着窗口的 DC 是其监视器 DC 的别名或代理? Windows 允许你说一个窗口类应该有它自己的 DC,所以看起来它们不是同一个 DC,尽管 Windows API 似乎也支持在 DC 之间建立父子关系。我会发现监视器的 DC 是父 DC 之一吗?

如果一个窗口跨越多个监视器会发生什么? Windows API 似乎只支持从窗口获取单个 HDC 并从 HDC 获取单个 HGLRC。我读过 OpenGL 不支持跨多个监视器的全屏窗口,因此您必须有多个窗口才能完成此操作。

SLI/Crossfire 系统会是单个 GLRC 吗?

在我看来,GLRC 与图形系统最相似。 GLRC 代表一个单一的图形系统。 DC 代表输出。 GLRC 可以绘制到与连接到图形系统的输出相关联的任何 DC 以及这些 DC 的任何子 DC。您还可以拥有多个显示器和多个显卡,每个都配对在一起,因此每个 GLRC 与每个 DC 配对。

正确还是确认?

【问题讨论】:

    标签: windows winapi opengl gdi wgl


    【解决方案1】:

    Windows 中的设备上下文是可以(理论上)绘制到的表面,并且很可能对显示器可见。 Windows 具有设备上下文,桌面窗口和监视器也是如此。单个窗口可以共享设备上下文;这可能发生在代表简单控件等的子窗口中。

    设备上下文没有您所说的父/子关系。整个CS_PARENTDC thing 是关于窗口设备上下文的剪切矩形。

    一个窗口有一个单一的设备上下文,句号(如果窗口不使用CS_OWNDC,它会稍微复杂一点,但在处理OpenGL时你应该总是使用它),无论窗口在哪里。术语“设备上下文”不应与“监视器”或任何实际硬件相混淆。它只是一个您可以绘制的表面。

    对于 OpenGL,设备上下文与渲染上下文的关联相对松散。只要 RC 是使用与新 DC 相同的像素格式创建的,就可以将任何设备上下文与 RC 一起使用。所以你可以在 DC1 上设置一个像素格式,用它制作一个 RC,然后在 DC2 上设置相同的像素格式,你可以将 wglMakeCurrent 与 DC1 或 DC2 以及那个 RC 一起使用。

    多显示器如何与 OpenGL 配合使用完全取决于 GPU 设置。允许 OpenGL 在 Windows 上工作的 ICD 机制只允许安装 single 驱动程序。因此,如果您的系统中有两张卡,每张卡都插入单独的监视器,带有两个不同的驱动程序,OpenGL 将只能识别其中一个。尝试绘制到部分位于其他 GPU 屏幕上的 DC 会产生不可预知的结果。

    现在,如果您有一张卡为多台显示器供电,OpenGL 不在乎。问题在于独立、可见图形处理器的数量。

    话虽如此,SLI/Crossfire 的全部意义在于假装两个 GPU 实际上只是一个。因此,您有 一个 驱动程序,操作系统只真正看到 一个 GPU,并且这些卡中只有 一个 输出到监视器。因此,OpenGL 的工作方式与一张卡为多台显示器供电的情况完全相同。

    【讨论】:

    • 这很有帮助。我可能会将其标记为我接受的答案。谢了哥们。这篇文章似乎也证实了您提到的内容 - (opengl.org/discussion_boards/showthread.php/…)。真正的耻辱 OpenGL 缺乏这样的支持,即使作为 API 的特定于操作系统的部分。我的 OpenGL API 抽象层只需要返回对单个“设备”的支持。
    • @SionSheevok:这并不缺乏 OpenGL 方面的功能,而是操作系统的驱动程序模型。 Linux/X11 上存在类似的限制,并且正在重新设计 OpenGL 驱动程序模型以允许并行安装来自不同供应商的多个驱动程序并同时使用。 ATM one 可以在 Linux 上使用多个 OpenGL 驱动程序,需要大量 的努力(涉及大量 LD_PRELOAD 向导)。从长远来看,正确支持混合图形是不可避免的。
    猜你喜欢
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2019-05-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多