一、背景
周六跟同事逛了上海的豫园、城隍庙、静安寺、静安公园。豫园门票40,相传是明代私人园林,园主人为当年的四川布政使,是江南风格古典园林,风景还不错。
周日天气降温,直接睡了一天,想起同事推荐的《沧元图》动漫,就拼多多开了一日会员,看了一晚上。
碰到好看的情节,我习惯性截屏,发现,呀,截图黑屏了。
出于码农本身的惯性思维,先要了解其原理,再不求甚解。
于是,禁用JavaScript,发现无用。这说明很大概率不是码农操控的。推测是浏览器本身的设置。
之后,进行各种Google,然后逐一验证后,解决了截图黑屏。
下面记录两种方法。
1.1 切换图形服务API
步骤
浏览器输入chrome://flags/#use-angle,然后将Default 调整为 OpenGL 即可。
将其中的介绍翻译为白话就是:选择 ANGLE 的图形后端API服务。 使用 OpenGL 驱动程序作为图形后端可能会在某些图形密集型应用程序中带来更高的性能,特别是在 NVIDIA GPU 上,它可以增加视频播放的电池和内存使用量。但是大多数 Windows 计算机默认使用 D3D11。
ANGLE是开源的,全名是Almost Native Graphics Layer Engine(最原生的图层引擎),其目标是使图形代码实现跨平台的转换。
说人话就是,ANGLE是建立在OpenGL ES(OpenGL for Embedded Systems)之上的。它的主要任务是提供一个桥梁,使得使用OpenGL ES编写的图形应用程序能够在不同平台上运行,而不受底层图形API的限制
其中,其他的底层图形API如下
- D3D9(Direct3D 9):用于在Windows平台上开发游戏和其他图形应用程序,渲染2D和3D图形
- D3D11(Direct3D 11):用于在Windows平台上开发游戏和其他图形应用程序,Direct3D 11相比于D3D9提供了更高级的图形功能
- Desktop OpenGL:简称OpenGL,支持跨平台。但是Windows开发者还是喜欢用Direct3D,这点类似于Java跟C#的处境
我个人怀疑D3D11中截图黑屏是Bug
优劣分析
优点
- 解决了截图黑屏
缺点
- 只要切换到了OpenGL,那么腾讯视频就无法网页4K了,但是D3D11是可以网页4K的。可以选择D3D11调到4K,再切换回OpenGL保持网页4K
1.2 禁用硬件加速
步骤
打开设置,输入硬件加速,关闭。这时候已经可以截图了。
优劣分析
解决了截图黑屏。但是会出现如下问题
- 弹幕卡顿
- 网页优酷、网页Bilibili可复现
- 高分辨率视频掉帧、声音断流
- 腾讯网页4K可复现
二、参考致谢
Direct3D的各个版本 - 知乎
所以你们有碰到老黄卡chrome黑屏问题么 178