From a9ee1542330c7e741f03e32322e6d009fe86145a Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Sat, 21 Mar 2020 16:13:45 +0100 Subject: [PATCH] Fixed Emscripten demo when transcoding to uncompressed formats (Also added editor config file) --- contrib/single_file_transcoder/.editorconfig | 4 ++++ .../examples/emscripten.cpp | 17 +++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 contrib/single_file_transcoder/.editorconfig diff --git a/contrib/single_file_transcoder/.editorconfig b/contrib/single_file_transcoder/.editorconfig new file mode 100644 index 0000000..a25dbdf --- /dev/null +++ b/contrib/single_file_transcoder/.editorconfig @@ -0,0 +1,4 @@ +[*] +insert_final_newline = true +indent_style = tab +indent_size = 4 diff --git a/contrib/single_file_transcoder/examples/emscripten.cpp b/contrib/single_file_transcoder/examples/emscripten.cpp index 96ae5a6..740bd26 100644 --- a/contrib/single_file_transcoder/examples/emscripten.cpp +++ b/contrib/single_file_transcoder/examples/emscripten.cpp @@ -379,20 +379,25 @@ bool upload(EMSCRIPTEN_WEBGL_CONTEXT_HANDLE const ctx, GLuint const name, const decSize = (std::max(8U, (descW + 3) & ~3) * std::max(8U, (descH + 3) & ~3) * 4 + 7) / 8; } else { - decSize = basis_get_bytes_per_block_or_pixel(type) * blocks; + decSize = basis_get_bytes_per_block_or_pixel(type); + if (basis_transcoder_format_is_uncompressed(type)) { + decSize *= descW * descH; + } else { + decSize *= blocks; + } } if (void* decBuf = malloc(decSize)) { - if (type >= transcoder_texture_format::cTFTotalTextureFormats) { + if (basis_transcoder_format_is_uncompressed(type)) { // note that blocks becomes total number of pixels for RGB/RGBA blocks = descW * descH; } if (transcoder.transcode_image_level(data, size, 0, level, decBuf, blocks, type)) { - if (type < transcoder_texture_format::cTFTotalTextureFormats) { - glCompressedTexImage2D(GL_TEXTURE_2D, level, - toGlType(type), descW, descH, 0, decSize, decBuf); - } else { + if (basis_transcoder_format_is_uncompressed(type)) { glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, descW, descH, 0, GL_RGBA, toGlType(type), decBuf); + } else { + glCompressedTexImage2D(GL_TEXTURE_2D, level, + toGlType(type), descW, descH, 0, decSize, decBuf); } success = true; }