开始使用
下一篇
第一节:定义场景
Loading...
G 作为 AntV 底层的渲染引擎,致力于为上层产品提供一致、高性能的 2D / 3D 图形渲染能力,适配 Web 端全部底层渲染 API(Canvas2D / SVG / WebGL / WebGPU / CanvasKit)。特别的,针对图场景下适合并行计算的算法提供 GPGPU 支持。
易用的 API。其中图形、事件系统兼容 DOM Element & Event API,动画系统兼容 Web Animations API。可以以极低的成本适配 Web 端已有的生态例如 D3、Hammer.js 手势库等。
适配多种渲染环境。支持 Canvas2D / SVG / WebGL / WebGPU / CanvasKit 以及运行时切换,并支持服务端渲染。
高性能的渲染与计算。为可并行算法提供基于 WebGPU 的 GPGPU 支持。webgpu-graph 使用 GPU 加速的图分析算法库。
可扩展的插件机制以及丰富的插件集:
完整 API Spec。
目前我们支持 CDN 和 NPM Module 两种使用方式。
首先在 HTML 中引入 G 的核心和渲染器 UMD:
<!-- G 核心 --><scriptsrc="https://unpkg.com/@antv/g/dist/index.umd.min.js"type="application/javascript"></script><!-- G 渲染器,支持 Canvas2D/SVG/WebGL --><scriptsrc="https://unpkg.com/@antv/g-canvas/dist/index.umd.min.js"type="application/javascript"></script><!-- <script src="https://unpkg.com/@antv/g-svg/dist/index.umd.min.js" type="application/javascript"></script><script src="https://unpkg.com/@antv/g-webgl/dist/index.umd.min.js" type="application/javascript"></script> -->
然后就可以在 window.G
的命名空间下使用 Canvas、Circle 这样的核心基础对象以及 Canvas2D.Renderer 这样的渲染器:
// 从核心包中引入画布、Circle 等对象const { Circle, Canvas, CanvasEvent } = window.G;// 创建一个渲染器,这里使用 Canvas2Dconst canvasRenderer = new window.G.Canvas2D.Renderer();// 创建画布const canvas = new Canvas({container: 'container',width: 600,height: 500,renderer: canvasRenderer,});// 创建一个 Circleconst circle = new Circle({style: {r: 50,fill: '#1890FF',stroke: '#F04864',lineWidth: 4,cursor: 'pointer',},});// 等待画布初始化完成canvas.addEventListener(CanvasEvent.READY, () => {// 向画布中加入 Circlecanvas.appendChild(circle);});
首先安装核心包和渲染器:
# 核心包$ npm install @antv/g --save# Canvas2D 渲染器$ npm install @antv/g-canvas --save# SVG 渲染器$ npm install @antv/g-svg --save# WebGL 渲染器$ npm install @antv/g-webgl --save
然后就可以在核心包中使用 Canvas、Circle 这样的核心基础对象以及 Renderer 这样的渲染器:
import { Canvas, CanvasEvent, Circle } from '@antv/g';import { Renderer } from '@antv/g-canvas';const canvas = new Canvas({container: 'container',width: 600,height: 500,renderer: new Renderer(),});const circle = new Circle({style: {r: 50,fill: '#1890FF',stroke: '#F04864',lineWidth: 4,cursor: 'pointer',},});canvas.addEventListener(CanvasEvent.READY, () => {canvas.appendChild(circle);});