webgl未使用独立显卡报告

简介: webgl未使用独立显卡报告

0x00 楔子


最近客户在使用我们的的三维可视化平台的时候,总是会出现浏览器崩溃,webgl context lost的情况。这种请一般出现在电脑配置很低的电脑上,比如没有独显,只有很小现存的集成显卡的电脑。


但是客户的电脑大部分都是配置还不错,有独立的显卡。


微信图片_20220425142018.pngimage.png


经过摸索和分析,最终发现了问题所在:就是电脑根本没有用上独立显卡,也就是说虽然硬件上有独立显卡,但是实际上三维程序还是用的集成显卡,导致跑不动三维程序。


如何判断三维程序是否用上了独立显卡呢,其实我们可以打开电脑的任务管理器,打开"性能"标签,一般可以看到两个GPU(Intel开头的是集成显卡,NVIDIA开头的是独立显卡)


微信图片_20220425142021.pngimage.png


从图中,可以看出 GPU0(集显) 使用率搞到88%,而GPU1(独显) 使用率却未0,表示三维应用程序未使用独显。


0x01 原因探究


经过测试,发现电脑不使用独立显卡的原因大概分为几类:


驱动未正确安装


独立显卡的驱动未安装,或者显卡的驱动未正确安装,导致电脑的独立显卡不能使用。可以通过电脑的设备管理器查看是否又独立显卡的适配器,如果没有,多半是未有安装显卡驱动。


显示器未接独立显卡


如果是台式机接主板自带的VGA/DVI/HDMI都是核显负责输出和运算,不接独显的接口不能发挥任何作用。反之,接了独显,那么CPU核显也会自动屏蔽不发挥作用。典型的例子就是你接了独显,比如N卡,只会有一个NVIDIA控制面板,而不会再出现一个英特尔核芯显卡控制界面。


如果是笔记本的话,一般带DP接口的一定是独显接口,其他接口如HDMI,VGA都是核显输出,但是笔记本硬性规则都是核显负责画面输出,独显负责需要运行的3D应用程序,这是英特尔强制规定的,所以笔记本除了有N卡独显的NVIDIA控制面板以外,还会有英特尔核芯显卡控制面板。值得注意的是,在6代以后的笔记本,有些bios提供了屏蔽核显的选项,有些是可以允许自由切换,或者一些超高端的笔记本,显卡为1070,1080甚至1080 SLI的,直接出厂就屏蔽了核显,没有这个核显的需要。测试都表明,核显在1070以上的笔记本机型,某些优化不到位的游戏会拖累独显性能,导致帧数下降,整体也比单独运行独显帧数要稍低。


程序指定使用集显


笔记本电脑,电脑可以同时使用集显和独显。


打开电脑NVIDIA 控制面板,可以指定程序使用独显还是集显,如下图所示:


微信图片_20220425142025.pngimage.png


微信图片_20220425142027.pngimage.png


如果指定了浏览器,比如chrome使用集成显卡,那么webgl也不会用到独立显卡。


0x02 如何解决


其实看了前面的“原因探究”,可以很方便的给出相应的解决方案。


如果未安装显卡驱动,就安装显卡驱动即可。安装的时候,需要注意选择正确的版本。

如果是台式机,检查显示器接头是否接在独立显卡的接口上,如果接在集成显卡的接口上,改变接口即可。


如果是程序指定了集显,改成使用独显即可。

过程不在详述。


0x03 结语


如果发现电脑配置不错,但是简单的三维应用很卡,多半是上述原因。

相关文章
|
3天前
|
网络协议 Windows
LabVIEW如何减少下一代测试系统中的硬件过时3
LabVIEW如何减少下一代测试系统中的硬件过时3
|
3天前
|
编解码 API
LabVIEW如何减少下一代测试系统中的硬件过时 1
LabVIEW如何减少下一代测试系统中的硬件过时 1
11 0
|
3天前
|
存储 芯片 异构计算
LabVIEW如何优化FPGA可用资源或提升速度
LabVIEW如何优化FPGA可用资源或提升速度
|
3天前
|
算法 图形学 UED
Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)
Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)
|
5月前
|
Windows
5.1 Windows驱动开发:判断驱动加载状态
在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息。该功能实现的核心函数是`NtQuerySystemInformation`这是一个微软未公开的函数,也没有文档化,不过我们仍然可以通过动态指针的方式调用到它,该函数可以查询到很多系统信息状态,首先需要定义一个指针。
41 0
5.1 Windows驱动开发:判断驱动加载状态
|
6月前
|
前端开发 算法 数据可视化
第三代软件开发-固定区域截图
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
8月前
|
vr&ar 开发工具 图形学
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
|
8月前
|
存储 内存技术
从简单的文件偏移、读写进一步研究MCU程序的下载和软件升级(上)
从简单的文件偏移、读写进一步研究MCU程序的下载和软件升级(上)
31 0
|
8月前
|
编解码 Android开发
Android平台GB28181设备接入模块分辨率发生变化怎么办?
我们在做Android平台gb28181设备接入模块的时候,遇到这样的情况,比如横竖屏分辨率不锁定,采集摄像头的时候,可以实现,横屏状态采集横屏,竖屏状态采集竖屏,简单来说,横屏状态比如采集的1280*720的,竖屏状态,采集的数据源成了720*1280。
内存清理、动画制作、CPU检测等五款实用软件推荐
人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。
261 0
内存清理、动画制作、CPU检测等五款实用软件推荐