17-mini版WebGLBufferRenderer

源码:github.com/buglas/thre...

1-WebGLBufferRendererMini 的代码

src\renderers\webgl\WebGLBufferRendererMini.js

ini 复制代码
/**
 * 最底层的 draw call 封装,对应 gl.drawArrays。
 */
function WebGLBufferRendererMini( gl ) {
    let mode;
    function setMode( value ) {
        mode = value;
    }
    function render( start, count ) {
        gl.drawArrays( mode, start, count );
    }
    this.setMode = setMode;
    this.render = render;
}
​
export { WebGLBufferRendererMini };

2-WebGLBufferRendererMini 的功能定位

WebGLBufferRenderer 是WebGL 渲染管线里最底层的非索引几何体绘制封装。

WebGLBufferRenderer 把 gl.drawArrays 及其变体统一包起来,并顺带更新渲染统计信息。

在 Three.js 中,几何体有两种绘制方式:

方式 对应 API 封装类
非索引(直接按顶点顺序画) gl.drawArrays WebGLBufferRenderer
索引(用 index buffer 复用顶点) gl.drawElements WebGLIndexedBufferRenderer

WebGLBufferRendererMini 保留了WebGLBufferRenderer 的核心更能,但具体功能做了删减。

3-代码详解

WebGLBufferRendererMini 是一个工厂函数(不是 class),接收 WebGL 上下文 gl,返回带两个方法的对象:

方法 作用
setMode(value) 保存绘制模式(如 TRIANGLES、LINES)
render(start, count) 调用 gl.drawArrays(mode, start, count)

mode 用闭包保存在函数内部,避免每次绘制都传模式参数。

4-与完整版 WebGLBufferRenderer 的对比

完整版在 src/renderers/webgl/WebGLBufferRenderer.js:

能力 Mini 版 完整版
drawArrays ✅ ✅
drawArraysInstanced(实例化) ❌ ✅
multiDrawArraysWEBGL(批量绘制) ❌ ✅
渲染统计 info.update ❌ ✅

Mini 版只保留最基础的 drawArrays,符合 WebGLRendererMini 的定位:学习/演示主链路,不支持实例化、多 group、线框等。

小结

WebGLBufferRendererMini 是精简渲染器的最后一环,把 WebGL 的 drawArrays 封装成 setMode + render 两个小接口。

前面 VAO、shader、uniform 都准备好之后,由它真正把几何体画到屏幕上。

相关推荐
小poop5 小时前
CSS 基础与实战:从入门到精通网页美化
前端
Csvn7 小时前
运行时性能
前端
Never_every998 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck8 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖9 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
欣欣之王来了10 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒10 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师10 小时前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
特立独行的猫A10 小时前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos
修炼的dance11 小时前
白底图存JPG,sharp开mozjpeg背景杂点少近三成
前端