强制在 Microsoft 混合系统上使用集成(Intel)显卡

2024-02-12

我使用 Microsoft 桌面复制 API,如果我的代码在集成(英特尔)显卡上运行,则一切正常。但如果我在专用卡上运行,则会出现错误。

我找到微软不支持这种用法 https://support.microsoft.com/en-my/help/3019314/error-generated-when-desktop-duplication-api-capable-application-is-ru在 Microsoft 混合系统的专用卡上

DXGI_ERROR_UNSUPPORTED

类似的问题没有解决我的需求:

  • DirectX11 桌面复制不适用于 NVIDIA https://stackoverflow.com/questions/40221187/directx11-desktop-duplication-not-working-with-nvidia
  • 桌面复制 API 和可切换显卡 https://stackoverflow.com/questions/37349427/desktop-duplication-api-switchable-graphics

解决方法是在集成卡上启动该程序。

我想从代码中解决这个问题。
我找到可以从我的代码中强制使用 NVIDIA / AMD 卡 https://www.gamedev.net/forums/topic/687516-two-graphics-cards-in-one-computer-how-to-make-decision-when-createdevice

extern "C" { // Hint to Hybrid laptop drivers that our app would really rather use the NVidia/AMD GPU that you've got sitting over there rather than Intel Graphics...
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
    _declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
  1. Intel 卡有类似的选项吗?
  2. 或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行? 我的意思是:启动我的应用程序,检查 NVIDIA / AMD 设置,如果不强制使用集成显卡(如果可用),则修改此设置并重新启动我的应用程序。
  3. 还有其他使用集成卡的解决方案吗? (不是手动解决方案)

尽管您可以使用 NVAPI 创建应用程序配置文件并设置特定标志以使您的应用程序在集成芯片上运行,但较新版本的 Windows 可能会覆盖您的首选项。因此,最可靠/最简单的方法是设置注册表值 https://stackoverflow.com/questions/59732181/programmatically-set-graphics-performance-for-an-app是在Windows 10 内部版本 17093 https://blogs.windows.com/windows-insider/2018/02/07/announcing-windows-10-insider-preview-build-17093-pc/.

或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行?我的意思是:启动我的应用程序,检查 NVIDIA / AMD 设置,如果不强制使用集成显卡(如果可用),则修改此设置并重新启动我的应用程序。

您可以使用注册表值来做到这一点,是的。我在实践中使用这种方法写了一篇概述 https://www.freemancw.com/2020/11/desktop-duplication-on-hybrid-graphics-systems/我如何选择进行 GPU 检查。我相信罗曼·雷尔佐夫(Roman Ryltsov)在他的作品中也做了类似的事情DxgiTakeSnapshot https://alax.info/blog/2075应用程序(他有很多关于该主题的帖子值得阅读)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制在 Microsoft 混合系统上使用集成(Intel)显卡 的相关文章

  • 用于区分调试和发布版本的 CMake 变量或属性

    我想为调试和发布版本设置不同的 CMake 变量 我尝试像这样使用 CMAKE CFG INTDIR IF CMAKE CFG INTDIR STREQUAL Debug SET TESTRUNNER DllPlugInTesterd dl
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 使用 C++/CLI 包装非托管 C++ 类库 - 问题 2 - 集合

    Note 这篇文章代表了我的询问的问题 2 两个问题中都会重复介绍部分 达到数字之前的所有文本 因为它是回答问题可能需要的背景信息 问题简介 我有一个非托管 C 库 其中包含多个 更高级别 库所共有和共享的类和函数 我现在需要向 C Net
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • 使用 /clr 或 clr:pure(cpprestsdk 又名 casablanca)编译时不支持互斥

    我创建一个CLR project in visual c with 64 bit配置 并尝试使用cpprestsdk aka casablanca 64bit 但是当我运行项目时 出现了错误 1 gt Build started Proje
  • 更改文件名时,录制开始会延迟 3 秒。

    在图中使用两个 ASFWriter 过滤器 一个正在制作 wmv 文件 另一个用于直播 进行流式传输 更改文件名时 录制开始会延迟 3 秒 所以 一个New WMV的头部丢失了 很烦恼啊 CAMERA InfTee 过滤器 AsfWrite
  • 如何向 Visual Studio 项目添加其他库?

    Allegro 是一个用于图形操作的开源 C 插件库 如何将此库添加到我的编译器中 这些说明对我不起作用 因为我使用的是 Windows 7 我不知道操作系统是否重要 我有 Visual Studio Express 版本 该库是一个 dl
  • 如何在使用 Cmake 构建期间编译 HLSL 着色器?

    我正在开发 d3d 应用程序 我想在使用 cmake 构建期间编译我的 hlsl 着色器 我不知道从哪里开始 这是我当前的 CMakeLists txt cmake minimum required VERSION 3 20 project
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 如何使用 Visual C++ 在 win32 API 中创建圆形/圆形按钮

    我有一个 Visual C 中的 Window Win32 API 应用程序 我没有使用MFC 我必须创建一个带有位图图像的圆形 圆形按钮 我的应用程序有一个皮肤视图 任何人都可以帮助我完成这项任务吗 按钮是窗口 您可以使用 CreateW
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • std::function 绑定到成员函数

    以下代码在 VS2012 中无法编译 class Zot public int A return 123 int tmain int argc TCHAR argv std function
  • 使用 Windows 电源管理 API 调暗显示器

    我正在尝试做一些看起来很简单的事情 我只想让我的程序能够在某些条件下调整显示器亮度 于是 我向窗户望去电源管理API http msdn microsoft com en us library aa373163 28v vs 85 29 a
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 完整的端到端教程 C++ 与 MYSQL Server 5.5

    我花了几个小时寻找关于如何使用 MYSQL Server 5 5 进行查询的完整端到端教程 这是使用 Visual Studio 2010 Express 的 Visual C 控制台应用程序 有人看过这个设置的实际工作教程吗 当所有内容都
  • 这个程序有什么问题?

    include
  • 如何更新 C++ dll 而无需将 exe 与 lib 文件重新链接?

    首先 我指的是 Windows 环境和 VC 编译器 我想要做的是重建 Vc dll 并保持与已链接到 lib 的 exe 的兼容性 而无需重建 exe 或使用 LoadLibrary 动态加载 dll 换句话说 有没有办法向 dll 添加
  • _addcarry_u64 和 _addcarryx_u64 与 MSVC 和 ICC

    MSVC 和 ICC 都支持内在函数 addcarry u64 and addcarryx u64 根据英特尔的内在指南 https software intel com sites landingpage IntrinsicsGuide
  • 将 char[] 转换为 LPCWSTR

    谁能帮我纠正这个代码 char szBuff 64 sprintf szBuff p m hWnd MessageBox NULL szBuff L Test print handler MB OK 错误是 它无法将第二个参数转换为 LPC

随机推荐