Pārlūkot izejas kodu

fix texture.readpixels

David Catuhe 8 gadi atpakaļ
vecāks
revīzija
759b6c19c1

BIN
assets/textures/SpecularHDR.dds


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 7390 - 7390
dist/preview release/babylon.d.ts


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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);