16-mini版WebGLBackground

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

1-WebGLBackgroundMini的代码

src\renderers\webgl\WebGLBackgroundMini.js

javascript 复制代码
import { Color } from '../../math/Color.js';
​
/**
 * 背景
 * Mini 版使用固定黄色,完整版会根据 scene.background 渲染天空盒或纯色。
 */
function WebGLBackgroundMini( renderer, state ) {
    const clearColor = new Color( 0xffff00 );
    function render() {
        state.buffers.color.setClear( clearColor.r, clearColor.g, clearColor.b );
        renderer.clear();
    }
    return {
        render: render,
    };
}
​
export { WebGLBackgroundMini };

2-WebGLBackgroundMini的功能定位

WebGLBackground 是WebGL 渲染器里负责处理场景背景的模块。

WebGLRenderer 在初始化时会实例化WebGLBackground ,并对外暴露 setClearColor / setClearAlpha 等 API。

WebGLBackgroundMini 亦是如此,只是具体功能做了删减。

3-代码详解

WebGLBackgroundMini的代码很简单,其主要职责是:在每帧渲染开始前,把画布清成固定黄色,为后续绘制几何体提供背景。

scss 复制代码
function WebGLBackgroundMini( renderer, state ) {
    const clearColor = new Color( 0xffff00 );
    function render() {
        state.buffers.color.setClear( clearColor.r, clearColor.g, clearColor.b );
        renderer.clear();
    }
    return {
        render: render,
    };
}

工作流程:

  1. 创建时:保存 renderer 和 state,并定义清屏颜色 0xffff00(黄色)。

  2. render() 被调用时:

    • state.buffers.color.setClear(...):设置 WebGL 清屏颜色(经 WebGLStateMini 调用 gl.clearColor,相同颜色会跳过重复设置)。
    • renderer.clear():执行 gl.clear(COLOR_BUFFER_BIT),清空颜色缓冲区。

与完整版 WebGLBackground 的对比

能力 完整版 Mini 版
纯色背景 支持 scene.background = Color 固定黄色
纹理 / 天空盒 支持 scene.background = Texture 不支持
环境混合 / XR 支持 不支持
setClearColor / setClearAlpha 支持 不支持
深度 / 模板缓冲清屏 支持 不支持(只清颜色)

完整版会根据 scene.background 选择清屏颜色或绘制背景几何体;

Mini 版只保留「设置清屏色 + 清空画布」这一最小步骤。

小结

WebGLBackgroundMini 是一个约 20 行的工厂函数,返回 { render } 接口,与完整版 API 形状一致,便于 WebGLRendererMini 按同样方式挂载。

WebGLBackgroundMini 不做真正的「背景渲染」,只做固定黄色清屏,是精简渲染器里最小可用的背景处理实现。

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