From b3c08a8ad68f97c5910695e913e16d30b0edf8b9 Mon Sep 17 00:00:00 2001 From: Denys Koch Date: Thu, 28 Sep 2017 11:09:18 +0200 Subject: [PATCH] Fix loading of 16bit PNG images When a 16bit PNG image is loaded, the internalTextureFormat is set to unsized (i.e pixelFormat) constant. This results in 8 Bit Texture2D --- src/osgPlugins/png/ReaderWriterPNG.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/osgPlugins/png/ReaderWriterPNG.cpp b/src/osgPlugins/png/ReaderWriterPNG.cpp index 8190a4b4d..fdd2a891b 100644 --- a/src/osgPlugins/png/ReaderWriterPNG.cpp +++ b/src/osgPlugins/png/ReaderWriterPNG.cpp @@ -307,6 +307,18 @@ class ReaderWriterPNG : public osgDB::ReaderWriter pixelFormat = GL_RGBA; int internalFormat = pixelFormat; + if (depth > 8) + { + switch(color) + { + case(GL_LUMINANCE): internalFormat = GL_LUMINANCE16; break; + case(GL_ALPHA): internalFormat = GL_ALPHA16; break; + case(GL_LUMINANCE_ALPHA): internalFormat = GL_LUMINANCE16_ALPHA16; break; + case(GL_RGB): internalFormat = GL_RGB16; break; + case(GL_RGBA): internalFormat = GL_RGBA16; break; + default: break; + } + } png_destroy_read_struct(&png, &info, &endinfo);