Kaynağa Gözat

feat(框架代码): Scene 支持可配置清屏颜色及透明背景模式

- 新增 clearColorValue 字段,默认值改为透明 [0,0,0,0]
- 新增 setClearTransparent() 方法,供游戏完成后调用
- draw() 使用 clearColorValue 代替硬编码的灰色,让 body 渐变背景透出
guoziyun 3 hafta önce
ebeveyn
işleme
80516bd37b
1 değiştirilmiş dosya ile 9 ekleme ve 2 silme
  1. 9 2
      src/base/Scene.ts

+ 9 - 2
src/base/Scene.ts

@@ -60,6 +60,14 @@ export class Scene implements Disposable {
   padding = new Padding(0, 0, 0, 0);
 
   pendingDraw = false;
+  // clearColorValue: [number, number, number, number] = [1, 1, 1, 1]; // 默认白色
+  clearColorValue: [number, number, number, number] = [0, 0, 0, 0]; // 默认透明
+
+  /** 游戏完成后调用,将 canvas 底色改为透明,让 body 渐变色透出 */
+  setClearTransparent() {
+    this.clearColorValue = [0, 0, 0, 0];
+    this.invalidate();
+  }
 
   constructor(
     readonly gl: WebGL2RenderingContext,
@@ -200,8 +208,7 @@ export class Scene implements Disposable {
     const gl = this.gl;
 
     gl.viewport(0, 0, this.width, this.height);
-    let a = 0xef / 255;
-    gl.clearColor(a, a, a, 1);
+    gl.clearColor(...this.clearColorValue);
     gl.clear(gl.COLOR_BUFFER_BIT);
     gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
     gl.enable(gl.BLEND);