瀏覽代碼

Fix some viewports issues with RTT

David Catuhe 8 年之前
父節點
當前提交
48e660e57f
共有 4 個文件被更改,包括 3358 次插入3347 次删除
  1. 1 1
      .vscode/settings.json
  2. 3344 3344
      dist/preview release/babylon.d.ts
  3. 11 0
      src/Materials/Textures/babylon.renderTargetTexture.ts
  4. 2 2
      src/babylon.engine.ts

+ 1 - 1
.vscode/settings.json

@@ -11,7 +11,7 @@
         "**/node_modules": true,
         "**/temp": true,
         "**/.temp": true,
-        "**/.d.ts": true,
+        "**/*.d.ts": true,
         "**/*.js.map": true,
         "**/*.js.fx": true,
         "**/*.js": { 

文件差異過大導致無法顯示
+ 3344 - 3344
dist/preview release/babylon.d.ts


+ 11 - 0
src/Materials/Textures/babylon.renderTargetTexture.ts

@@ -207,6 +207,7 @@
 
         public render(useCameraPostProcess?: boolean, dumpForDebug?: boolean) {
             var scene = this.getScene();
+            var engine = scene.getEngine();
 
             if (this.useCameraPostProcesses !== undefined) {
                 useCameraPostProcess = this.useCameraPostProcesses;
@@ -214,6 +215,8 @@
 
             if (this.activeCamera && this.activeCamera !== scene.activeCamera) {
                 scene.setTransformMatrix(this.activeCamera.getViewMatrix(), this.activeCamera.getProjectionMatrix(true));
+            } else {
+                scene.setTransformMatrix(scene.activeCamera.getViewMatrix(), scene.activeCamera.getProjectionMatrix(true));               
             }
 
             if (this._waitingRenderList) {
@@ -289,6 +292,7 @@
             if (this.activeCamera && this.activeCamera !== scene.activeCamera) {
                 scene.setTransformMatrix(scene.activeCamera.getViewMatrix(), scene.activeCamera.getProjectionMatrix(true));
             }
+            engine.setViewport(scene.activeCamera.viewport);
 
             scene.resetCachedMaterial();
         }
@@ -305,6 +309,13 @@
                     engine.bindFramebuffer(this._texture);
                 }
             }
+            
+            if (this.activeCamera) {
+                engine.setViewport(this.activeCamera.viewport);
+            }
+            else {
+                engine.setViewport(scene.activeCamera.viewport);
+            }
 
             this.onBeforeRenderObservable.notifyObservers(faceIndex);
 

+ 2 - 2
src/babylon.engine.ts

@@ -1007,8 +1007,8 @@
          * @param {number} [requiredHeight] - the height required for rendering. If not provided the rendering canvas' height is used.
          */
         public setViewport(viewport: Viewport, requiredWidth?: number, requiredHeight?: number): void {
-            var width = requiredWidth || (navigator.isCocoonJS ? window.innerWidth : this._renderingCanvas.width);
-            var height = requiredHeight || (navigator.isCocoonJS ? window.innerHeight : this._renderingCanvas.height);
+            var width = requiredWidth || (navigator.isCocoonJS ? window.innerWidth : this.getRenderWidth());
+            var height = requiredHeight || (navigator.isCocoonJS ? window.innerHeight : this.getRenderHeight());
             var x = viewport.x || 0;
             var y = viewport.y || 0;