Explorar o código

fix texture.readpixels

David Catuhe %!s(int64=8) %!d(string=hai) anos
pai
achega
759b6c19c1
Modificáronse 4 ficheiros con 14793 adicións e 14781 borrados
  1. BIN=BIN
      assets/textures/SpecularHDR.dds
  2. 7390 7390
      dist/preview release/babylon.d.ts
  3. 7390 7390
      dist/preview release/babylon.module.d.ts
  4. 13 1
      src/babylon.engine.ts

BIN=BIN
assets/textures/SpecularHDR.dds


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 7390 - 7390
dist/preview release/babylon.d.ts


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 7390 - 7390
dist/preview release/babylon.module.d.ts


+ 13 - 1
src/babylon.engine.ts

@@ -3988,7 +3988,19 @@
 
             let readFormat = gl.RGBA;
             let readType = (texture.type !== undefined) ? this._getWebGLTextureType(texture.type) : gl.UNSIGNED_BYTE;
-            let buffer = new Uint8Array(4 * width * height);
+            let buffer: ArrayBufferView;
+
+            switch (readType) {
+                case gl.UNSIGNED_BYTE:
+                    buffer = new Uint8Array(4 * width * height);
+                    break;
+                case gl.FLOAT:
+                    buffer = new Float32Array(4 * width * height);
+                    break;            
+                case gl.HALF_FLOAT_OES:
+                    buffer = new Uint16Array(4 * width * height);
+                    break;                          
+            }
             gl.readPixels(0, 0, width, height, readFormat, readType, buffer);
             
             gl.bindFramebuffer(gl.FRAMEBUFFER, null);