Please use a browser that supports "canvas"

STATIC_DRAW DYNAMIC_DRAW STREAM_DRAW 作用与区别

一、核心区别

标志 数据更新频率 数据访问模式 典型内存位置 适用场景
STATIC_DRAW 一次写入,极少修改 频繁读取,长期使用 高性能静态内存区 静态模型、地形、UI 静态元素
DYNAMIC_DRAW 中等频率修改 多次读取,多次写入 可重写内存区 动态 UI、角色动画、可编辑网格
STREAM_DRAW 每帧/高频修改 写入后立即使用 流式内存区 粒子系统、实时生成几何体、GPU 计算

二、详细解析

1. STATIC_DRAW

2. DYNAMIC_DRAW

3. STREAM_DRAW

三、性能优化原则

四、底层实现差异(以现代 GPU 为例)

标志 内存类型 典型访问延迟 写入带宽 读取带宽
STATIC_DRAW VRAM 静态区 低 (~100ns)
DYNAMIC_DRAW VRAM 可映射区 中 (~300ns)
STREAM_DRAW 系统内存 → 直接上传路径 高 (~1μs)