文件 | 语言 | 大小 | 版本 | 开发者 | 最后更新 | |
lands/webgl production | JavaScript | 9.8KB | v1.0.0 | YB | 2024-10-30 | 查看 |
lands/webgl source code | JavaScript | 20.6KB | v1.0.0 | YB | 2024-10-30 | 查看 |
const canvas = await Lan.webgl(900, 600, {options...}); // canvas width, height and rendering options
const canvas = await Lan.webgl(900, {options...}); // auto set canvas height with aspect ratio 3/2
const canvas = await Lan.webgl({options...}); // canvas dimensions default to 900 x 600
因为 webgl 是蓝紫的核心渲染引擎之一,可以直接通过全局变量 Lan 进行访问,请参考向导程序:多程序串行。
import {webgl} from "https://ddzeb.com/lands/webgl";
await webgl(canvas, {options...});
canvas.render();
const {webgl} = await import("https://ddzeb.com/lands/webgl");
await webgl(canvas, {options...});
canvas.render();
原生 WebGL 2.0,对 WebGL2RenderingContext 的底层封装,可以编写顶点着色器(Vertex Shader)以及片元着色器(Fragment Shader)进行渲染,具体可参考蓝紫官方样例:Rotating Cube。我们对 WebGL 接口进行了极尽简化和精心设计,力求让引擎接口清晰、方便且灵活强大。
const canvas = await Lan.webgl(900, 600, {
alpha : false,
antialias : false,
});
// use canvas to draw
其中,alpha 以及 antialias 缺省为 false。我们将接口添加在 canvas 上,可通过 canvas 对象进行调取。
数组,所有 Vertex Shader 源代码。
数组,所有 Fragment Shader 源代码。
返回 bool 值,表示 context 是否已丢失。
执行图像清除操作,绘制为统一的颜色,所有参数均为可选参数。
将 WebGL 错误代码转换为可读字符串,err 参数可选。
创建 WebGLTexture 对象,所有参数可选。当 data 未传或不可用的时候,创建一个与画布尺寸一致的空纹理对象。
options 可选参数如下:
返回对象包含如下属性和方法:
int
),通常会被绑定为一个 sampler2D
的 uniform
值;texImage2D
等操作;通过 6 个图片(Image)加载 Cubemap 天空盒纹理,返回对象包含如下属性和方法:
int
),通常会被绑定为一个 samplerCube
的 uniform
值。加载 Cubemap 图片,可使用 media 库的 cubemap 接口。
创建 WebGLFramebuffer 对象,用于接受 Shader 程序的渲染输出。返回对象附加接口:
创建缓冲(WebGLBuffer),type
缺省为 ARRAY_BUFFER
,usage
缺省为 STATIC_DRAW
。返回对象附加属性方法如下:
编译 Shader 代码,传入参数 type 为 string 类型,取值:vertex 或 fragment。
编译并生成一个 WebGLProgram 对象。vs 及 fs 必传,可以是字符串形式的代码,也可以是蓝紫里的 Shader 代码段整数编号(从 0 开始)。当 Shader 代码未包含 #version 指示器时,将自动添加 #version 300 es 指示器并在 Fragment Shader 中添加 out vec4 fragColor 颜色输出项。
可选参数 options 包括:
返回的 WebGLProgram 对象附加接口如下:
uniform
对象。其中 type
为 string
类型,可选值有:int
、float
、ivec2
、ivec3
、ivec4
、vec2
、vec3
、vec4
、mat2
、mat3
、mat4
。返回对象附加属性方法如下:draw
方法有效。我们将 gl.drawArrays 代理到了 canvas 对象作为接口,分别为:drawPoints、drawLineStrip、drawLineLoop、drawLines、drawTriangleStrip、drawTriangleFan 以及 drawTriangles,参数均为 (count, first),其中 first 默认为 0。
清理和销毁。在蓝紫开发环境中无需调用此接口,开发环境会自动进行回收清理工作。