---
title: "渲染器"
description: "渲染器"
language: "zh"
canonical: "https://g6.antv.antgroup.com/zh/manual/further-reading/renderer/"
version: "5.1.1"
---

G6 默认使用 Canvas 作为渲染器，但也支持通过 SVG 和 WebGL 进行渲染，要切换到 SVG 或 WebGL 渲染器，只需在初始化时传入 `renderer` 参数即可。

## 使用 SVG 渲染器

1. 安装渲染器依赖：

```bash
npm install @antv/g-svg
```

2. 配置渲染器：

```javascript
import { Renderer as SVGRenderer } from '@antv/g-svg';
import { Graph } from '@antv/g6';

const graph = new Graph({
  // ... other options
  // 这里所有的画布都会使用 SVG 渲染器
  renderer: () => new SVGRenderer(),
});
```

## 使用 WebGL 渲染器

1. 安装渲染器依赖：

```bash
npm install @antv/g-webgl
```

2. 配置渲染器：

```javascript
import { Renderer as WebGLRenderer } from '@antv/g-webgl';
import { Graph } from '@antv/g6';

const graph = new Graph({
  // ... other options
  // 这里所有的画布都会使用 WebGL 渲染器
  renderer: () => new WebGLRenderer(),
});
```

## 分层使用不同的渲染器

G6 采用了分层画布进行渲染，因此 `renderer` 是一个回调函数，参数是画布类型，返回渲染器实例，如果你想在不同的画布上使用不同的渲染器，可以这样配置：

```javascript
import { Renderer as SVGRenderer } from '@antv/g-svg';
import { Renderer as WebGLRenderer } from '@antv/g-webgl';

const graph = new Graph({
  // ... other options
  renderer: (layer) => {
    // 主画布使用 WebGL 渲染器，其他画布使用 SVG 渲染器
    if (layer === 'main') return new WebGLRenderer();
    return new SVGRenderer();
  },
});
```

## 动态切换渲染器

G6 没有提供单独的 API 来切换渲染器，但你仍可以通过 `setOptions` 方法来更新 `renderer` 参数：

```javascript
import { Renderer as SVGRenderer } from '@antv/g-svg';
import { Renderer as WebGLRenderer } from '@antv/g-webgl';

// 初始化时使用 WebGL 渲染器
const graph = new Graph({
  // ... other options
  renderer: () => new WebGLRenderer(),
});

await graph.render();

// 切换到 SVG 渲染器
graph.setOptions({
  renderer: () => new SVGRenderer(),
});
```
