vislite
Version:
灵活、快速、简单的数据可视化交互式跨端前端库
107 lines (80 loc) • 2.18 kB
Markdown
WebGL 相关模块,用于 3D 图形渲染。**仅支持 H5 端**。
```js
import { getWebGLContext } from 'vislite';
var canvas = document.getElementById('canvas');
var gl = getWebGLContext(canvas, scale, {
preserveDrawingBuffer: true
}, 'scaleToFill');
```
- **canvas**: HTMLCanvasElement
- **scale**: 缩放比例,默认1
- **opts**: 配置项
- `preserveDrawingBuffer`: 是否保留绘制缓冲区
- **mode**: 缩放模式
- `scaleToFill`: 拉伸填充
- `aspectFit`: 适应(保持比例)
- `aspectFill`: 覆盖(保持比例)
返回 `WebGL2RenderingContext` 对象。
```js
import { Shader } from 'vislite';
var shader = new Shader(gl, {
vertexShader: '...', // 顶点着色器源码
fragmentShader: '...' // 片元着色器源码
});
shader.use();
```
- `use()`: 使用该着色器程序
- `setAttribute(name, data)`: 设置顶点属性
- `setUniform(name, type, value)`: 设置 uniform 变量
```js
import { Buffer } from 'vislite';
var buffer = new Buffer(gl);
buffer.setAttribute('position', data);
buffer.bind();
```
```js
import { Texture } from 'vislite';
var texture = new Texture(gl);
texture.bind();
texture.setImage(image);
texture.setParameter(params);
```
```js
import { getWebGLContext, Shader, Buffer, Texture } from 'vislite';
var gl = getWebGLContext(canvas, 1);
// 创建着色器
var shader = new Shader(gl, {
vertexShader: `
attribute vec4 position;
void main() {
gl_Position = position;
}
`,
fragmentShader: `
precision mediump float;
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
`
});
shader.use();
// 创建缓冲区
var buffer = new Buffer(gl);
buffer.setAttribute('position', new Float32Array([
0, 0.5, 0,
-0.5, -0.5, 0,
0.5, -0.5, 0
]));
buffer.bind();
// 绘制
gl.drawArrays(gl.TRIANGLES, 0, 3);
```