瀏覽代碼

even have no rendergroup, observer need be notified.

KK 8 年之前
父節點
當前提交
86aa5491c1
共有 1 個文件被更改,包括 28 次插入30 次删除
  1. 28 30
      src/Rendering/babylon.renderingManager.ts

+ 28 - 30
src/Rendering/babylon.renderingManager.ts

@@ -77,45 +77,43 @@
             for (let index = RenderingManager.MIN_RENDERINGGROUPS; index < RenderingManager.MAX_RENDERINGGROUPS; index++) {
                 this._depthStencilBufferAlreadyCleaned = index === RenderingManager.MIN_RENDERINGGROUPS;
                 var renderingGroup = this._renderingGroups[index];
+                if(!renderingGroup && !observable)
+                    continue;
 
                 this._currentIndex = index;
 
-                if (renderingGroup) {
-                    let renderingGroupMask = 0;
-
-                    // Fire PRECLEAR stage
-                    if (observable) {
-                        renderingGroupMask = Math.pow(2, index);
-                        info.renderStage = RenderingGroupInfo.STAGE_PRECLEAR;
-                        info.renderingGroupId = index;
-                        observable.notifyObservers(info, renderingGroupMask);
-                    }
-
-                    // Clear depth/stencil if needed
-                    let autoClear = this._autoClearDepthStencil[index];
-                    if (autoClear && autoClear.autoClear) {
-                        this._clearDepthStencilBuffer(autoClear.depth, autoClear.stencil);
-                    }
+                let renderingGroupMask = 0;
 
-                    // Fire PREOPAQUE stage
-                    if (observable) {
-                        info.renderStage = RenderingGroupInfo.STAGE_PREOPAQUE;
-                        observable.notifyObservers(info, renderingGroupMask);
-                    }
+                // Fire PRECLEAR stage
+                if (observable) {
+                    renderingGroupMask = Math.pow(2, index);
+                    info.renderStage = RenderingGroupInfo.STAGE_PRECLEAR;
+                    info.renderingGroupId = index;
+                    observable.notifyObservers(info, renderingGroupMask);
+                }
 
+                // Clear depth/stencil if needed
+                let autoClear = this._autoClearDepthStencil[index];
+                if (autoClear && autoClear.autoClear) {
+                    this._clearDepthStencilBuffer(autoClear.depth, autoClear.stencil);
+                }
+
+                if (observable) {
+                    // Fire PREOPAQUE stage
+                    info.renderStage = RenderingGroupInfo.STAGE_PREOPAQUE;
+                    observable.notifyObservers(info, renderingGroupMask);
                     // Fire PRETRANSPARENT stage
-                    if (observable) {
-                        info.renderStage = RenderingGroupInfo.STAGE_PRETRANSPARENT;
-                        observable.notifyObservers(info, renderingGroupMask);
-                    }
+                    info.renderStage = RenderingGroupInfo.STAGE_PRETRANSPARENT;
+                    observable.notifyObservers(info, renderingGroupMask);
+                }
 
+                if (renderingGroup)
                     renderingGroup.render(customRenderFunction, renderSprites, renderParticles, activeMeshes);
 
-                    // Fire POSTTRANSPARENT stage
-                    if (observable) {
-                        info.renderStage = RenderingGroupInfo.STAGE_POSTTRANSPARENT;
-                        observable.notifyObservers(info, renderingGroupMask);
-                    }
+                // Fire POSTTRANSPARENT stage
+                if (observable) {
+                    info.renderStage = RenderingGroupInfo.STAGE_POSTTRANSPARENT;
+                    observable.notifyObservers(info, renderingGroupMask);
                 }
             }
         }