Fixed Emscripten demo when transcoding to uncompressed formats
(Also added editor config file)
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 @@
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;
}