新的挑战:WebGL

news2024/10/6 22:32:02

这段时间一直在死磕 Chromium 的 8K 高清视频播放,虽然之前写过一些关键技术的实现,主要难点差不多攻破,但投入到产品中,依然还要解决很多实际中的问题,比如卡顿、格式支持、音视频不同步等等。前期的相关文章:

  • Chromium 改造实录:国标AVS2 & AVS3 支持起来

  • Chromium 改造实录:增加 MP2 音频支持

  • Chromium 改造实录:增加 MPEG TS 格式支持

  • 选择最新 Chromium,支持 H264 / H265

就在我准备歇口气的时候,又遇到了新的麻烦,这次的主角是 WebGL。

具体来说,运营方上线了一个业务,结果在浏览器中显示成这样:

c86d97ee7c0ea78e401d9309e4f2209d.png

一调查,这个业务的页面是使用 WebGL 实现的。

对我来说,WebGL 是一个全新的东西。从名字上来讲,这个 WebGL 和 OpenGL 有很大关系,事实也是如此。

WebGL 是一种基于 Web 的 3D 绘图标准,它可以让 Web 开发者利用 JavaScript 和 OpenGL ES 2.0 来创建和展示 3D 场景和模型。WebGL 通过在 HTML5 Canvas 元素上提供一个 JavaScript 绑定,可以让浏览器直接调用系统的显卡,实现硬件加速的 3D 渲染。这样, WebGL 不仅可以提高 Web 页面的交互性和视觉效果,还可以用于开发复杂的导航和数据可视化应用,甚至是 3D 网页游戏。

问题是我对 OpenGL 也不熟。

当前的情况比较尴尬,使用相同 chromium 代码编译出来的 Chromium Browser 或者 Content Shell,显示 WebGL 页面没有问题,但是基于 WebView 的浏览器就存在问题。更为尴尬的是,基于相同 Chromium 代码编译出的 SystemWebView, 放到其它的硬件平台上也没有问题。

所以接下来的调查方向有两个:

  1. WebView 和 Content 层在 WebGL接入上有所差异,具体的差异在哪里?

  2. OpenGL ES 驱动上是否存在问题,为什么不同的硬件平台存在不同表现?

两条路都很难,本来编写 OpenGL 程序就是一个相当难的事情,现在还要去弄清楚背后是怎么去实现的。调查硬件驱动更是难,和具体的硬件绑定太深。

说起 WebGL,估计很多人比较陌生,现实中似乎也应用得不多。但实际上,WebGL 还是一个不错的技术:

  • WebGL 是一个开放的、跨平台的、免费的标准,它由 Khronos Group 制定和维护,得到了多个浏览器厂商和硬件厂商的支持。

  • WebGL 不需要安装任何插件或外部库,只要浏览器支持 WebGL,就可以在任何设备上运行WebGL应用。

  • WebGL 可以与其他 Web 技术和 API 结合使用,例如 HTML、CSS、SVG、DOM、Web Audio、WebRTC 等,实现丰富的多媒体和网络功能。

  • WebGL 可以利用现有的 OpenGL ES 2.0 或 OpenGL ES 3.0(WebGL 2.0)的知识和资源,开发者可以使用熟悉的图形编程语言(GLSL)和工具。

现实中也存在许多 WebGL 的应用场景:

  • 地图:WebGL 最广为人知的例子是谷歌地图的地形视图。不管是何种形式的地形图或空间排列,都可以从 3D 展示中获益。你可以在浏览器中旋转、缩放、平移地图,看到不同的角度和细节。你甚至可以切换到街景模式,体验一下虚拟现实的感觉。

  • 游戏:游戏是 WebGL 的最大应用领域,有很多优秀的 WebGL 游戏可以在浏览器中玩。比如说,Unity 是最流行的游戏开发平台,并提供 WebGL 构建选项。你可以在网页上玩一些 Unity 制作的游戏,例如《坦克大战》、《死亡之屋》、《疯狂的出租车》等等。

  • 在线展览:WebGL 可以让你在浏览器中创建和浏览 3D 的虚拟展厅,展示各种类型的作品和内容,例如艺术品、服装、汽车、建筑等等。WebGL 的优势是它不需要安装任何插件或软件,只要有一个支持 WebGL 的浏览器,就可以直接访问在线展览的网址,享受身临其境的体验。

这次暴露问题的业务就是在线博物馆,遇到问题也没法逃避,只能迎头直上,接下来需要恶补一些 OpenGL 和 WebGL 的知识了。

后续有收获,会和大家一起分享,欢迎围观!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ基础API使用以及基本原理探究

文章目录 同步发送异步发送单向发送拉模式随机获取一个queue的消息指定一个queue的消息 顺序消息广播消息延迟消息批量消息过滤消息Tag过滤sql过滤 事务消息RocketMQ常见问题RocketMQ如何保证消息不丢失?RocketMQ的消息持久化机制RocketMQ如何保证消息顺序RocketMQ事…

Day07 Python函数详解

文章目录 第四章 Python函数使用4.1. 函数介绍4.2. 函数的定义与使用4.2.1. 函数的定义4.2.2. 调用 4.3. 函数的参数4.4. 函数的返回值4.4.1. 返回值介绍4.4.2. None类型 4.5. 函数说明4.5.1. 函数注释4.5.2. 函数的4中定义方式4.5.3. 函数的调用 4.6. 函数的嵌套调用4.7. 函数…

哪款 IMG BXS GPU 适合您的汽车?

Imagination 是汽车行业领先的图形处理器供应商。Imagination 的 GPU IP 经过了九代更新迭代,为车辆提供了舒适性和安全性,在汽车行业的总出货量接近 5 亿。通过将响应迅速的 HMI(人机界面)与功能日益强大的高级驾驶员辅助系统相结…

Linux:主机状态监控

查看系统的资源占用 可以通过top命令,查看系统CPU、内存使用情况 top命令内容详解: 第一行:top:命令名称,10.49.16:当前系统时间,up 4:40:启动了4小时40分,4 users&#…

Aspose.Pdf使用教程:为PDF文件添加swf注释

Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能&am…

STL之priority_queue与仿函数

目录 一.仿函数1.介绍2.示例 二.priority_queue1.介绍2.成员函数3.模拟实现4.使用 三.其他1.typename Container::value_type 一.仿函数 1.介绍 函数对象,又称仿函数,是可以像函数一样使用的对象,其原理就是重载了函数调用符:()…

浅谈数据中台之标签管理平台

在现如今的大数据时代,相信大家一定了解或者听说过下列几个场景: 购物APP:千人千面,意思不同用户使用相关的产品感觉是不一样的,不同用户看到的购物APP首页推荐内容和其他相关推荐流信息可能是完全不同的。 社交APP&…

实例:使用网络分析仪进行电缆测试

本应用测试针对非标称50Ω的线缆,包括同轴、双绞线、差分高速数据线的测试,包括阻抗参数、S参数(插损、驻波、Smith图等等),也可以绘制眼图。 根据电缆的性能,如频率范围、长度、是否差分,设置…

Linux:root用户

root用户对Linux系统拥有最大的操作权限。 普通用户的权限一般都在home目录下,超过home目录后,普通用户在很多地方只有只读和执行的权限,但没有修改权限。 1、su命令:切换到root用户的命令语法: su -root “-”符号是可…

精密空调监控:不会这个技巧,千万不要尝试

随着科技的不断进步和信息化的发展,精密空调设备被广泛应用于数据中心、通信基站、医疗设施、实验室等对温度和湿度要求严格的环境中,以保证设备的正常运行和数据的安全性。 借助动环监控系统,精密空调可以实时了解设备的运行状态、温湿度的变…

数据库迁移 | Oracle数据迁移方案之技术两三点

今年Oracle似乎又火了,火得要下掉,目前中国大概有240数据库企业,在国产信创的大趋势下,一片欣欣向荣,国库之春已然来临。到今天为止,Oracle依旧是市场份额最大的数据库,天下苦秦久矣&#xff0c…

关于使用keil瑞萨RA4M2踩过的坑

一、之前在rasc添加的组件不能删除。 下面在rasc添加ThreadX,不只是RTOS,其他组件也出现这种情况。 当去掉组件不使用,重新配置。但是组件还是显示在软件包,导致编译出错。 解决方式,自己琢磨发现: 找到工…

腾讯视频技术团队偷懒了?!

👉腾小云导读 PC Web 端、手机 H5 端、小程序端、App 安卓端、App iOS 端......在多端时代,一个应用往往需要支持多端。若每个端都独立开发一套系统来支持,将消耗巨大的人力和经费!腾讯视频团队想到一个“偷懒”的方法——能不能只…

共建智慧工厂物联网平台方案 | 6.10 IoTDB X EMQ 主题 Meetup 回顾

6 月 10 日,IoTDB X EMQ 智慧工厂主题 Meetup 在深圳成功举办。工业物联网时序数据库研发商天谋科技、物联网数据基础设施软件供应商 EMQ 的两位技术大牛,针对多行业制造流程中数据传输、故障感知、决策执行等常见难题,通过数据基础设施平台的…

更智能、更强大:OpenAI发布升级版gpt-3.5-turbo-0613/16k速度提升,长度飙升4倍

OpenAI开发者平台最近推出了两个引人注目的GPT升级版本:gpt-3.5-turbo-0613和gpt-3.5-turbo-16k。这些新版本带来了一系列令人兴奋的功能和增强,为开发者提供了更加灵活和强大的自然语言处理工具。本文将为您介绍这两个版本的主要特点和优势。 gpt-3.5-t…

vue使用外部字体自定义LCD字体(晶管体)

大屏监控中常用到液晶字体效果,如下图所示: 一、下载字体格式 1、下载地址【Techno > LCD fonts | dafont.com】 二、解压字体 1、下载后,解压后都是.ttf文件,在Font Squirrel (这个地址打开,直接可以…

Multi-headed Self-attention(多头自注意力)机制介绍

对于输入的序列 来说,与RNN/LSTM的处理过程不同,Self-attention机制能够并行对进行计算,这大大提高了对特征进行提取(即获得)的速度。结合上述Self-attention的计算过程,并行计算的原理如下图所示&#xff…

储存卡格式化,分享3个正确方法!

Dam是个摄影师,经常使用储存卡存储各种照片、视频。正好他明天又要出外景,但害怕内存不够,想把储存卡格式化,又担心自己操作失误。因此求助如何正确格式化储存卡。 储存卡为我们存储文件等带来了诸多便利。有时候,我们…

无人机上仅使用CPU实时运行Yolov5(OpenVINO实现)(下篇)

​上期中我们讲了Yolov5的前两节环境配置及简单运行,在本期中我们带来后面两节在不同处理器下的实验数据及如何训练自己的模型。​ 三、在不同处理器上的延迟与效果 为了查看Yolov5在不同设备上的延迟与效果,下面我们对Inter的i3、i5、i7三种处理器在同…

「深度学习之优化算法」笔记(三)之粒子群算法

1. 粒子群算法简介 粒子群算法(Particle Swarm Optimization,PSO)是一种模仿鸟群、鱼群觅食行为发展起来的一种进化算法。其概念简单易于编程实现且运行效率高、参数相对较少,应用非常广泛。粒子群算法于1995年提出,距今&#xff…