c# – 强制硬件加速渲染

发布时间:2019-05-30 发布网站:编程之家

编程之家收集整理的这篇文章主要介绍了c# – 强制硬件加速渲染,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个用C编写的OpenGL库,它使用C#应用程序使用C/C++LI适配器.我的问题是,如果将应用程序用于使用Nvidia Optimus技术的笔记本电脑,该应用程序将不会使用硬件加速并失败.

我试图使用在Nvidias文档http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf中找到的信息
关于将libs链接到我的C -dll,并从我的OpenGL库导出NvOptimusEnablement但是失败.
我想我不得不与.exe连接到.exe的.exe文件

对于我们来说,使用配置文件不是一个好选择,因为我们需要确保使用nvidia硬件.

有没有一些C#应用程序可以强制Optimus使用Nvidia芯片组而不是集成的英特尔芯片组?

解决方法

如果您的软件在Intel上失败,那么您将无法在50%的笔记本电脑上运行它.所以我建议修改这个.

不如说,您可以通过代码完美地创建配置文件.只需使用NvAPI.
这个代码完全是这样的,但要小心,你可能不应该混淆全局配置文件并创建自己的代码:

  1. NvAPI_Status status;
  2. // (0) Initialize NVAPI. This must be done first of all
  3. status = NvAPI_Initialize();
  4. if (status != NVAPI_OK)
  5. PrintError(status,__LINE__);
  6. // (1) Create the session handle to access driver settings
  7. NvDRSSessionHandle hSession = 0;
  8. status = NvAPI_DRS_CreateSession(&hSession);
  9. if (status != NVAPI_OK)
  10. PrintError(status,__LINE__);
  11. // (2) load all the system settings into the session
  12. status = NvAPI_DRS_LoadSettings(hSession);
  13. if (status != NVAPI_OK)
  14. PrintError(status,__LINE__);
  15. // (3) Obtain the Base profile. Any setting needs to be inside
  16. // a profile,putting a setting on the Base Profile enforces it
  17. // for all the processes on the system
  18. NvDRSProfileHandle hProfile = 0;
  19. status = NvAPI_DRS_GetBaseProfile(hSession,&hProfile);
  20. if (status != NVAPI_OK)
  21. PrintError(status,__LINE__);
  22. NVDRS_SETTING drsSetting1 = {0};
  23. drsSetting1.version = NVDRS_SETTING_VER;
  24. drsSetting1.settingId = SHIM_MCCOMPAT_ID;
  25. drsSetting1.settingType = NVDRS_DWORD_TYPE;
  26. NVDRS_SETTING drsSetting2 = {0};
  27. drsSetting2.version = NVDRS_SETTING_VER;
  28. drsSetting2.settingId = SHIM_RENDERING_MODE_ID;
  29. drsSetting2.settingType = NVDRS_DWORD_TYPE;
  30. NVDRS_SETTING drsSetting3 = {0};
  31. drsSetting3.version = NVDRS_SETTING_VER;
  32. drsSetting3.settingId = SHIM_RENDERING_OPTIONS_ID;
  33. drsSetting3.settingType = NVDRS_DWORD_TYPE;
  34. if( ForceIntegrated ){
  35. drsSetting1.u32CurrentValue = SHIM_MCCOMPAT_INTEGRATED;
  36. drsSetting2.u32CurrentValue = SHIM_RENDERING_MODE_INTEGRATED;
  37. drsSetting3.u32CurrentValue = SHIM_RENDERING_OPTIONS_DEFAULT_RENDERING_MODE | SHIM_RENDERING_OPTIONS_IGPU_TRANSCODING;
  38. }else{
  39. drsSetting1.u32CurrentValue = SHIM_MCCOMPAT_ENABLE;
  40. drsSetting2.u32CurrentValue = SHIM_RENDERING_MODE_ENABLE;
  41. drsSetting3.u32CurrentValue = SHIM_RENDERING_OPTIONS_DEFAULT_RENDERING_MODE;
  42. }
  43. status = NvAPI_DRS_SetSetting(hSession,hProfile,&drsSetting1);
  44. if (status != NVAPI_OK)
  45. PrintError(status,__LINE__);
  46. status = NvAPI_DRS_SetSetting(hSession,&drsSetting2);
  47. if (status != NVAPI_OK)
  48. PrintError(status,&drsSetting3);
  49. if (status != NVAPI_OK)
  50. PrintError(status,__LINE__);
  51. // (5) Now we apply (or save) our changes to the system
  52. status = NvAPI_DRS_SaveSettings(hSession);
  53. if (status != NVAPI_OK)
  54. PrintError(status,__LINE__);
  55. // (6) We clean up. This is analogous to doing a free()
  56. NvAPI_DRS_DestroySession(hSession);
  57. hSession = 0;

在启动时,测试您的个人资料是否存在.如果没有,创建它(你可能也必须重新启动自己).
NvAPI是一个静态库,并且将在非NVIDIA硬件上正常返回错误代码,因此您可以安全地发货.

编辑:看起来有一个更简单的方法.来自GLFW 3源代码:

  1. // Applications exporting this symbol with this value will be automatically
  2. // directed to the high-performance GPU on nVidia Optimus systems
  3. //
  4. GLFWAPI DWORD NvOptimusEnablement = 0x00000001;

总结

以上是编程之家为你收集整理的c# – 强制硬件加速渲染全部内容,希望文章能够帮你解决c# – 强制硬件加速渲染所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478

c# – 强制硬件加速渲染相关推荐

  1. Chromium硬件加速渲染的OpenGL命令执行过程分析

    在Chromium中,由于GPU进程的存在,WebGL端.Render端和Browser端的GPU命令是代理给GPU进程执行的.Chromium将它们要执行的GPU命令进行编码,然后写入到一个命令缓冲 ...

  2. 【读书笔记】【WebKit技术内 幕(三)】GPU硬件加速渲染、canvas与WebGL、 JavaScript与JavaScript 引擎、JavaScriptCore与V8

    文章目录 前言 Something great 第8章 硬件加速机制 硬件加速基础 -- *** Chromium的硬件加速机制 -- *** 其他硬件加速模块 第9章 JavaScript引擎 Ja ...

  3. Android 系统(175)---Android硬件加速原理与实现简介

    Android硬件加速原理与实现简介 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往 ...

  4. 关于硬件加速哪些优秀的资源总结

    问题1:transform动画为什么没有经过大量的重绘? 解答:为什么 transform 没有触发 repaint 呢?(1)简而言之,transform 动画由GPU控制,支持硬件加速,并不需要软 ...

  5. 一文读懂,Android中的硬件加速

    /   今日科技快讯   / 近日,携程发布<2023年春节旅游总结报告>.报告显示,春节期间国内外旅行订单皆迎来三年巅峰,旅游订单整体较虎年春节增长4倍.同时,春节期间出境游整体订单同比 ...

  6. Android硬件加速原理与实现简介

    转载自:https://tech.meituan.com/hardware-accelerate.html 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速&qu ...

  7. Android硬件加速原理与实现简介-美团技术团队 ​

    在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚 ...

  8. Android 屏幕绘制机制及硬件加速

    文章目录 前言 硬件加速 CPU / GPU结构对比 OpenGL Android 的图形组件 画笔 画纸 画板 合成及显示 CPU / GPU 绘制过程 软件绘制 硬件加速 视图构建 额外点 硬件加 ...

  9. “一文读懂“系列:Android中的硬件加速

    浅谈 前几天有个朋友问我"了不了解关于手机硬件加速方面的知识?",嗯?其实我也想知道... 于是笔者就去网上搜罗了文章再结合自己对源码的理解,总结了这篇关于硬件加速的理解. 关于屏 ...

  10. firefox硬件加速 linux,强制启用 Firefox 的硬件加速功能

    Firefox 在硬件加速这点上始终落后于 Chrome ,换个说法就是 Mozilla 相对"保守"注重稳定.目前 Firefox 22 已经基本支持了硬件加速功能,包括对于 W ...

最新文章

  1. IOS 滑动指示导航栏 渐变
  2. ASP.NET把DataTable转成XML文件的函数
  3. 14. 函数返回值为引用?
  4. em模型补缺失值_模型对缺失值的处理
  5. input发送a.jax_JAX-RS 2.0的新功能– @BeanParam批注
  6. 深入Java集合学习系列:HashSet的实现原理
  7. testing framework
  8. java 我爱你_Java初级教程-课程笔记
  9. mysql无法添加服务_MySQL无法开启服务
  10. 改进:js修改iOS微信浏览器的title
  11. 考研数学证明题快速方法
  12. HRNet论文阅读及部分代码标注
  13. STC12C5A60S2定时器配置
  14. 输入某年某月某日,判断这一天是这一年的第几天?
  15. anki最新开发文档(2.1)
  16. openedge-function模块浅析——百度BIE边缘侧openedge项目源码阅读(3)
  17. AndroidUSB—OTG通信
  18. 学习笔记-----浅谈汇编指令CMP运行机制
  19. 智慧图书馆,RFID技术在图书借还,图书防盗中的应用优势
  20. python中np.random.randint()函数

热门文章

  1. 未转变者服务器tp指令大全,Unturned未转变者3.21版本高级指令大全
  2. word2019如何删除段落文字带颜色的背景
  3. javascript适合移动端的响应式瀑布流插件实例演示
  4. 计算机中的文档地址怎么填写,电脑中我的文档属性中没有位置选项如何修改存储位置...
  5. sqlserver2008已成功与服务器建立连接 但在登录过程中发生错误,指定的网络名不可再用(已解决)
  6. 亲手制作:超级DOS工具+Vista+加强版WindowsXP Lite5.8集成
  7. 关于clob字段的使用 ORA-22835:缓冲区对于CLOB到CHAR转换而言太小异常
  8. 关于XAMPP Apache 启动失败的问题
  9. 用友java开发待遇_【北京用友软件工资】java开发工程师待遇-看准网
  10. nginx/tengine限制流量如何配置