52得票2回答
在计算机上枚举显示器

我找到了7种不同的方法来枚举连接到计算机上的监视器。但是所有的解决方案都给出了不同的结果(监视器的数量和每个监视器的信息)。 这些解决方案包括: 使用著名的EnumDisplayDevices 使用EnumDisplayMonitors 使用Windows Management Inst...

18得票1回答
桌面复制(DirectX)屏幕捕获无法提供屏幕更新。

我正在开发一个应用程序,可以通过桌面复制API(使用DirectX 11)捕获屏幕的内容(仅捕获前一次屏幕更新后的差异),并在另一个窗口上呈现它(查看器可能在通过局域网连接的另一台计算机上运行)。该代码是MSDN提供的示例的改进版。除了设备有时不提供屏幕更新之外,一切都运行良好,这种情况大约会...

17得票1回答
在窗口模式下,Windows 10 等待 VBLANK 的正确方法是什么?

在窗口模式下,等待VBLANK正确的方法是什么?目前我正在执行以下操作: D3DKMTWaitForVerticalBlankEvent(&waitData); swapchain->Present(0, 0); 然而,这会导致偶尔出现的卡顿。我对这种卡顿的理论是: DWM...

14得票1回答
DXGI桌面复制屏幕捕捉速度

我正在使用桌面复制 API中的AcquireNextFrame来捕获屏幕。屏幕的刷新率为120Hz。当以120FPS运行游戏时,屏幕捕获可以捕获120FPS的帧数。但是当将游戏的帧率增加到240FPS时,屏幕捕获实际上会下降到大约70FPS。我的猜测是额外的帧被累积了,这增加了开销,但我不确定...

13得票3回答
如何在DXGI中获取显示器/输出的当前显示模式(分辨率、刷新率)?

我正在创建一个多显示器全屏DXGI/D3D应用程序。在准备创建它们的交换链时,我正在枚举可用的输出和适配器。 当我使用DXGI的IDXGIFactory::CreateSwapChain方法创建我的交换链时,我需要提供一个交换链描述,其中包括类型为DXGI_MODE_DESC的缓冲区描述,详...

10得票1回答
DXGI桌面复制:将帧编码以便通过网络发送

我正在尝试编写一个应用程序,它将捕获屏幕的视频流并将其发送到远程客户端。我发现在Windows上捕获屏幕的最佳方法是使用DXGI桌面复制API(自Windows 8以来可用)。微软提供了一个漂亮的示例,可以将复制的帧流式传输到屏幕上。现在,我一直在想什么是最简单但仍然相对快速的方式来编码这些帧...

8得票3回答
D3D11:如何将GDI文本绘制到GXDI表面?(无需D2D)

我需要一些关于使用GDI和D3D11将文本绘制到纹理上的帮助。我尝试使用D2D/DirectWrite,但它只支持D3D10,而不是我需要的D3D11。到目前为止,我尝试的一切都失败了... 现在我想使用GDI方法来写入纹理。 因此我创建了一个具备以下参数的纹理: Usage = D3D11...

7得票1回答
使用多个视频适配器(GPU)的PC上的DirectX11

通常,DirectX11的初始化始于创建一个DirectX11设备: D3D_DRIVER_TYPE driverTypes[] = { D3D_DRIVER_TYPE_HARDWARE, D3D_DRIVER_TYPE_WARP, D3D_DRIVER_TYPE_R...

7得票1回答
IDXGISurface1 的 GetDC/ReleaseDC 方法的线程安全/同步规则是什么?

对于使用 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 创建的纹理,ID3D11Surface1 的 GetDC/ReleaseDC 的线程安全规则是什么? 在 GetDC 和 ReleaseDC 之间,我可以与另一个线程交互 ID3D11Device 和 ID3D1...