Windows 以编程方式设置应用程序的图形性能

Windows 以编程方式设置应用程序的图形性能,windows,winapi,directx,ms-media-foundation,dxgi,Windows,Winapi,Directx,Ms Media Foundation,Dxgi,Windows控制面板中有一个选项,允许将应用程序设置为“高性能”。 控制面板->系统->显示->图形设置 在添加应用程序时,我注意到,当使用MediaFoundation和H.265编码时,它使用英伟达GFX适配器进行编码。在此之前,它使用嵌入式Intel graphics,只进行H.264编码,因此H.265编码在CPU中缓慢完成 如何以编程方式将应用程序添加到那里?这对我的音序器的性能至关重要 非常感谢 据我所知,这方面没有API或文档。然而,优先权保留在登记册中 HKEY\U CURRE

Windows控制面板中有一个选项,允许将应用程序设置为“高性能”。 控制面板->系统->显示->图形设置

在添加应用程序时,我注意到,当使用MediaFoundation和H.265编码时,它使用英伟达GFX适配器进行编码。在此之前,它使用嵌入式Intel graphics,只进行H.264编码,因此H.265编码在CPU中缓慢完成

如何以编程方式将应用程序添加到那里?这对我的音序器的性能至关重要

非常感谢


据我所知,这方面没有API或文档。然而,优先权保留在登记册中

HKEY\U CURRENT\U USER\Software\Microsoft\DirectX\UserGpuPreferences

GpuPreference
部分和整数值对应的字符串值

如果您以编程方式在那里设置该值,则会在下次应用程序重新启动时获取该值。父
UserGpuPreferences
DirectX
键可能不存在,因此您需要确保它们也存在

此外,据我所知,此首选项优先于供应商(AMD、NVIDIA)特定设置中可能存在的类似首选项设置

另见:

  • 在MSDN论坛上
例子 如果应用程序是
C:\testapp.exe
,则需要创建以下注册表项:

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\DirectX\UserGpuPreferences]
"C:\\testapp.exe"="GpuPreference=1;"

或者另一种方法是使用设置以交互方式添加覆盖,然后查看创建的注册表值。

我现在无法确认,但我认为Windows也尊重那些NVIDIA和AMD技巧:因为dxgi.dll、d3d9.dll和opengl32.dll包含这些神奇字符串。@SimonMourier:遗憾的是,这些技巧只是一种方式,这些只能强制执行离散的GPU首选项。注意:看起来此键可能在任何给定的计算机上存在,也可能不存在。一开始这让我很吃惊,但通常的Direct3D内容是在HKLM(而不是HKCU)下进行的。因此,除了在HKCU下添加值外,您可能还需要在HKCU下创建密钥。