diff --git a/src/osg/Image.cpp b/src/osg/Image.cpp index 28ab640b6..d27e5e4b8 100644 --- a/src/osg/Image.cpp +++ b/src/osg/Image.cpp @@ -356,14 +356,58 @@ GLenum Image::computePixelFormat(GLenum format) case(GL_LUMINANCE_ALPHA32F_ARB): return GL_LUMINANCE_ALPHA; + case (GL_R16F): + case (GL_R32F): + case (GL_R8): + case (GL_R8_SNORM): + case (GL_R16): + case (GL_R16_SNORM): + return GL_RED; + + case (GL_R8I): + case (GL_R8UI): + case (GL_R16I): + case (GL_R16UI): + case (GL_R32I): + case (GL_R32UI): + return GL_RED_INTEGER_EXT; + + case (GL_RG16F): + case (GL_RG32F): + case (GL_RG8): + case (GL_RG8_SNORM): + case (GL_RG16): + case (GL_RG16_SNORM): + return GL_RG; + + case (GL_RG8I): + case (GL_RG8UI): + case (GL_RG16I): + case (GL_RG16UI): + case (GL_RG32I): + case (GL_RG32UI): + return GL_RG_INTEGER; + case(GL_RGB32F_ARB): case(GL_RGB16F_ARB): + case(GL_R3_G3_B2): + case(GL_RGB4): + case(GL_RGB5): + case(GL_RGB8): + case(GL_RGB8_SNORM): + case(GL_RGB10): + case(GL_RGB12): + case(GL_SRGB8): return GL_RGB; case(GL_RGBA8): case(GL_RGBA16): case(GL_RGBA32F_ARB): case(GL_RGBA16F_ARB): + case(GL_RGBA8_SNORM): + case(GL_RGB10_A2): + case(GL_RGBA12): + case(GL_SRGB8_ALPHA8): return GL_RGBA; case(GL_ALPHA8I_EXT): @@ -535,9 +579,31 @@ unsigned int Image::computeNumComponents(GLenum pixelFormat) case(GL_ALPHA32UI_EXT): return 1; case(GL_ALPHA16F_ARB): return 1; case(GL_ALPHA32F_ARB): return 1; + case(GL_R16F): return 1; case(GL_R32F): return 1; + case(GL_R8): return 1; + case(GL_R8_SNORM): return 1; + case(GL_R16): return 1; + case(GL_R16_SNORM): return 1; + case(GL_R8I): return 1; + case(GL_R8UI): return 1; + case(GL_R16I): return 1; + case(GL_R16UI): return 1; + case(GL_R32I): return 1; + case(GL_R32UI): return 1; case(GL_RG): return 2; + case(GL_RG16F): return 2; case(GL_RG32F): return 2; + case(GL_RG8): return 2; + case(GL_RG8_SNORM): return 2; + case(GL_RG16): return 2; + case(GL_RG16_SNORM): return 2; + case(GL_RG8I): return 2; + case(GL_RG8UI): return 2; + case(GL_RG16I): return 2; + case(GL_RG16UI): return 2; + case(GL_RG32I): return 2; + case(GL_RG32UI): return 2; case(GL_RGB): return 3; case(GL_BGR): return 3; case(GL_RGB8I_EXT): return 3;