Windows DC和GLRC对应的是什么?


一号位
2025-03-18 02:04:34 (3天前)
  1. 一个窗口类应该有自己的DC,所以看起来它们不是相同的DC,虽然Windows API似乎也支持在它们之间建立父子关系


区议会
</跨度>
。我会发现…监视器的DC是父母之一

区议会
</跨度>

如果窗口跨越多个监视器会发生什么? Windows API似乎只支持从窗口中获取单个HDC并从中获取单个HGLRC …

2 条回复
  1. 0# v-star*위위 | 2019-08-31 10-32



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



    设备上下文没有您所指的父/子关系。整体


    CS_PARENTDC

    事情

    是关于窗口设备上下文的剪切矩形。



    一个窗口有一个设备上下文,句点(如果窗口不使用,它会比那个复杂一点

    CS_OWNDC

    ,但无论窗口在哪里,你都应该在处理OpenGL时使用它。术语“设备上下文”不应与“监视器”或任何实际硬件混淆。它只是一个你可以画的表面。



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



    多监视器的东西如何与OpenGL一起使用完全取决于GPU的设置。允许OpenGL在Windows上工作的ICD机制只允许使用



    要安装的驱动程序。因此,如果您的系统中有两张卡,每个卡插入单独的显示器,有两个不同的驱动程序,OpenGL将只识别其中一个。尝试绘制部分位于其他GPU屏幕上的DC会产生不可预测的结果。



    现在,如果你有一张卡供给多个显示器,OpenGL并不在意。问题是独立的可见图形处理器的数量。



    话虽这么说,SLI / Crossfire的重点是

    假装

    两个GPU实际上只是一个。因此,你有



    驱动程序,操作系统才真正看到



    GPU,只有



    这些卡输出到监视器。因此,OpenGL的工作方式与为一个卡提供多个监视器的工作方式完全相同。


登录 后才能参与评论