初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法

news/2025/2/15 20:17:42/

初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法

    • WebGPU学习资源
    • 初识WebGPU
    • 遇到并解决问题
    • 在线示例

因公司需求,开始接触 WebGPU,偶然遇到问题,网上搜索无效,后来通过逐步判断,终于定位到问题,这里记录一下,为其他遇到此问题的网友提供解决思路。

本包含 WebGPU学习资源、初识WebGPU、遇到并解决问题、在线示例四部分。


WebGPU学习资源


1. 学习API WebGPU_API 。

在这里插入图片描述

3. 基础学习 WebGPU 理论基础。

在这里插入图片描述

4. 在线示例 WebGPU Samples。

在这里插入图片描述

5. WebGPU 与 WebGL 对比:WebGL 与 WebGPU 比对

根据以上学习资源,快速了解什么是 WebGPU 以及完成 helloworld 入门。


初识WebGPU


1. 什么是 WebGPU以及为什么要用WebGPU?

网上资料一搜一大堆,这里我简单说一下自己的理解:

对于计算机图形(二维三维)而言,需要大量的计算,这些计算通常需要交给 GPU,而 WebGL提供了调用 GPU 的接口,使得在 Web 端也可以很轻松的加载酷炫的效果。

但是 WebGL 是通过 OpenGL 驱动 GPU,存在一定的局限性,不能完全发挥 GPU 的性能,因此 WebGPU 出现了。

以下是 WebGPU 的介绍(复制的):

WebGPU API 使 web 开发人员能够使用底层系统的 GPU(图形处理器)进行高性能计算并绘制可在浏览器中渲染的复杂图形。

WebGPU 是 WebGL 的继任者,为现代 GPU 提供更好的兼容、支持更通用的 GPU 计算、更快的操作以及能够访问到更高级的 GPU 特性。

WebGPU 解决了WebGL 中的一些问题,其提供了与现代 GPU API 兼容的更新的通用架构,它会让你感到更加丝滑。它支持图形渲染,同时对 GPGPU 计算也有一流的支持。在 CPU 端渲染单个对象的成本要低得多,并且它支持现代化的 GPU 渲染特性,例如,基于计算的粒子和用于后期处理的滤镜,如颜色效果、锐化和景深模拟。此外,它也可以直接在 GPU 上处理诸如剔除和骨骼动画模型等耗费大量计算资源的任务。

总之就是:WebGPU 作为下一代图形计算,非常有前景,非常牛,最好学学!

这里放一个 WebGL 和 WebGPU 在线对比:WebGL 和 WebGPU 性能效果对比

在这里插入图片描述

在这里插入图片描述

2. WebGPU helloworld


<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"></head><body><script type="text/javascript">// 异步方法// 判断是否支持 WebGPUasync function init() {// 是否支持 WebGPUif (!navigator.gpu) {alert("WebGPU not supported.");throw Error("WebGPU not supported.");}// 适配器const adapter = await navigator.gpu.requestAdapter();if (!adapter) {throw Error("Couldn't request WebGPU adapter.");}// 获取逻辑设备const device = await adapter.requestDevice();console.log(device)alert("WebGPU supported.");//...}init()
</script>
</body></html>

遇到并解决问题


1. 遇到问题应该也很普遍:WebGPU not supported.

在这里插入图片描述

开始以为没有开启 WebGPU,后经过查看以及其他 WebGL 程序测试,确认已经开启 WebGPU。

2. 解决问题

经过不断调试代码以及运行环境,最终发现,应该是 WebGPU 权限问题。

结论:WebGPU 只允许本地访问或者 https 访问!!!

即,浏览器地址只能是:localhost、127.0.0.1 或者 https + 其他地址

如果 http + 其他地址则会报以上错误!

2. 错误原因,没搜索到,放上文心一言的回答

在这里插入图片描述

测试地址:

http + WebGPU 初始化(报错)

在这里插入图片描述

https + WebGPU 初始化(正常)

在这里插入图片描述


在线示例

在这里插入图片描述

webgpu 在线示例:webgpu 绘制三角形


http://www.ppmy.cn/news/1266915.html

相关文章

排序算法---插入排序

1. 基本思想 从待排序列的第二个元素开始&#xff0c;与前面已排序的每个元素进行比较&#xff0c;若大&#xff08;或小&#xff09;则交换两元素&#xff0c;直到待排元素到达正确位置为止 下面以摸扑克牌为例&#xff0c;我们希望摸到的牌最终在手中是有序的&#xff0c;假设…

JVM学习笔记-如何在IDEA打印JVM的GC日志信息

若要在Idea上打印JVM相应GC日志&#xff0c;其实只需在Run/Debug Configurations上进行设置即可。 拿《深入Java虚拟机》书中的3-7代码例子来演示&#xff0c;如 1 public class JvmTest {2 private static final int _1MB1024*1024;3 public static void main(String…

云服务器Centos中安装Docker

云服务器Centos中安装Docker 1 简介DockerCentosCentos和Ubuntu区别 2 安装3 测试hello-world的镜像测试 1 简介 Docker Docker是一个开源的应用容器引擎&#xff0c;利用操作系统本身已有的机制和特性&#xff0c;可以实现远超传统虚拟机的轻量级虚拟化。它支持将软件编译成…

Spark-Streaming+Kafka+mysql实战示例

文章目录 前言一、简介1. Spark-Streaming简介2. Kafka简介二、实战演练1. MySQL数据库部分2. 导入依赖3. 编写实体类代码4. 编写kafka主题管理代码5. 编写kafka生产者代码6. 编写Spark-Streaming代码总结前言 本文将介绍一个使用Spark Streaming和Kafka进行实时数据处理的示例…

040.Python面向对象_设计原则

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

Javascript的基本语法(规范)

JS的基本语法规范 1.JS中严格区分大小写 2.JS中每一个指令被称为一个语句&#xff0c;每一个语句都应该以分号结尾 - 在JS中有自动的添加分号的机制&#xff0c;如果不写分号浏览器会自动为你添加 - 有些情况下&#xff0c;浏览器可能会给你加错了&#xff08;几率低&#…

android项目实战之使用框架 集成多图片、视频的上传

效果图 实现方式&#xff0c;本功能使用PictureSelector 第三方库 。作者项目地址&#xff1a;https://github.com/LuckSiege/PictureSelector 1. builder.gradle 增加 implementation io.github.lucksiege:pictureselector:v3.11.1implementation com.tbruyelle.rxpermissio…

【BI】FineBI功能学习路径-20231211

FineBI功能学习路径 https://help.fanruan.com/finebi/doc-view-1757.html 编辑数据概述 1.1 调整数据结构 1.2 简化数据 2.1上下合并 2.2其他表添加列 2.3左右合并 新增分析指标 函数参考 https://help.fanruan.com/finereport/doc-view-1897.html 数值函数 日期函数 文…