区块链技术博客
www.b2bchain.cn

WebGPU 的类型约定之WebIDL求职学习资料

本文介绍了WebGPU 的类型约定之WebIDL求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • 说明
  • enum
  • namespace


说明

WebGPU 的规范是通过 WebIDL 语言来描述的,本篇主要介绍类型定义。

函数定义、继承描述较为简单,故略去。

用于定义类型的语法有以下五种。

enum

枚举类型,通常其枚举值就是 JavaScript 字符串,取值时符合里面的任意一个即可。

enum GPUTextureDimension {   "1d",   "2d",   "3d", };

于是,你可以在创建纹理对象时这样用这个枚举:

const texture = device.createTexture({   /* ... */   dimension: "2d", // <- dimension 字段是 GPUTextureDimension 类型 })

你要是传 "36d" 那就不合适了。

namespace

需要通过 Namespace.XXX 访问,通常是二进制数字值,也算是一种枚举吧。

typedef [EnforceRange] unsigned long GPUBufferUsageFlags; [Exposed=(Window, DedicatedWorker)] namespace GPUBufferUsage {   const GPUFlagsConstant MAP_READ      = 0x0001;   const GPUFlagsConstant MAP_WRITE     = 0x0002;   const GPUFlagsConstant COPY_SRC      = 0x0004;   const GPUFlagsConstant COPY_DST      = 0x0008;   const GPUFlagsConstant INDEX         = 0x0010;   const GPUFlagsConstant VERTEX        = 0x0020;   const GPUFlagsConstant UNIFORM       = 0x0040;   const GPUFlagsConstant STORAGE       = 0x0080;   const GPUFlagsConstant INDIRECT      = 0x0100;   const GPUFlagsConstant QUERY_RESOLVE = 0x0200; };

那么创建一个 GPUBuffer 时,它的 usage 字段就可以这么设置:

const buffer = device.createBuffer({   usage: GPUBufferUsage.UNIFORM,   /* ... */ })

因为字面量是二进制数字值,所以可以用位运算来实现多种类型并设:

const buffer = device.createBuffer({   usage: GPUBufferUsage.VERTEX | GPUBufferUsage.MAP_WRITE,   /* ... */ })

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • 说明
  • enum
  • namespace


说明

WebGPU 的规范是通过 WebIDL 语言来描述的,本篇主要介绍类型定义。

函数定义、继承描述较为简单,故略去。

用于定义类型的语法有以下五种。

enum

枚举类型,通常其枚举值就是 JavaScript 字符串,取值时符合里面的任意一个即可。

enum GPUTextureDimension {   "1d",   "2d",   "3d", };

于是,你可以在创建纹理对象时这样用这个枚举:

const texture = device.createTexture({   /* ... */   dimension: "2d", // <- dimension 字段是 GPUTextureDimension 类型 })

你要是传 "36d" 那就不合适了。

namespace

需要通过 Namespace.XXX 访问,通常是二进制数字值,也算是一种枚举吧。

typedef [EnforceRange] unsigned long GPUBufferUsageFlags; [Exposed=(Window, DedicatedWorker)] namespace GPUBufferUsage {   const GPUFlagsConstant MAP_READ      = 0x0001;   const GPUFlagsConstant MAP_WRITE     = 0x0002;   const GPUFlagsConstant COPY_SRC      = 0x0004;   const GPUFlagsConstant COPY_DST      = 0x0008;   const GPUFlagsConstant INDEX         = 0x0010;   const GPUFlagsConstant VERTEX        = 0x0020;   const GPUFlagsConstant UNIFORM       = 0x0040;   const GPUFlagsConstant STORAGE       = 0x0080;   const GPUFlagsConstant INDIRECT      = 0x0100;   const GPUFlagsConstant QUERY_RESOLVE = 0x0200; };

那么创建一个 GPUBuffer 时,它的 usage 字段就可以这么设置:

const buffer = device.createBuffer({   usage: GPUBufferUsage.UNIFORM,   /* ... */ })

因为字面量是二进制数字值,所以可以用位运算来实现多种类型并设:

const buffer = device.createBuffer({   usage: GPUBufferUsage.VERTEX | GPUBufferUsage.MAP_WRITE,   /* ... */ })

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • 说明
  • enum
  • namespace


说明

WebGPU 的规范是通过 WebIDL 语言来描述的,本篇主要介绍类型定义。

函数定义、继承描述较为简单,故略去。

用于定义类型的语法有以下五种。

enum

枚举类型,通常其枚举值就是 JavaScript 字符串,取值时符合里面的任意一个即可。

enum GPUTextureDimension {   "1d",   "2d",   "3d", };

于是,你可以在创建纹理对象时这样用这个枚举:

const texture = device.createTexture({   /* ... */   dimension: "2d", // <- dimension 字段是 GPUTextureDimension 类型 })

你要是传 "36d" 那就不合适了。

namespace

需要通过 Namespace.XXX 访问,通常是二进制数字值,也算是一种枚举吧。

typedef [EnforceRange] unsigned long GPUBufferUsageFlags; [Exposed=(Window, DedicatedWorker)] namespace GPUBufferUsage {   const GPUFlagsConstant MAP_READ      = 0x0001;   const GPUFlagsConstant MAP_WRITE     = 0x0002;   const GPUFlagsConstant COPY_SRC      = 0x0004;   const GPUFlagsConstant COPY_DST      = 0x0008;   const GPUFlagsConstant INDEX         = 0x0010;   const GPUFlagsConstant VERTEX        = 0x0020;   const GPUFlagsConstant UNIFORM       = 0x0040;   const GPUFlagsConstant STORAGE       = 0x0080;   const GPUFlagsConstant INDIRECT      = 0x0100;   const GPUFlagsConstant QUERY_RESOLVE = 0x0200; };

那么创建一个 GPUBuffer 时,它的 usage 字段就可以这么设置:

const buffer = device.createBuffer({   usage: GPUBufferUsage.UNIFORM,   /* ... */ })

因为字面量是二进制数字值,所以可以用位运算来实现多种类型并设:

const buffer = device.createBuffer({   usage: GPUBufferUsage.VERTEX | GPUBufferUsage.MAP_WRITE,   /* ... */ })

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » WebGPU 的类型约定之WebIDL求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们