| @@ -251,9 +251,9 @@ type | |||
| tfARGB4us1, //< 1 x unsigned short (4bit alpha, 4bit red, 4bit green, 4bit blue) | |||
| tfRGB5A1us1, //< 1 x unsigned short (5bit red, 5bit green, 5bit blue, 1bit alpha) | |||
| tfA1RGB5us1, //< 1 x unsigned short (1bit alpha, 5bit red, 5bit green, 5bit blue) | |||
| tfRGBA8ub4, //< 1 x unsigned byte (red), 1 x unsigned byte (green), 1 x unsigned byte (blue), 1 x unsigned byte (alpha) | |||
| tfRGBA8ui1, //< 1 x unsigned int (8bit red, 8bit green, 8bit blue, 8 bit alpha) | |||
| tfARGB8ui1, //< 1 x unsigned int (8 bit alpha, 8bit red, 8bit green, 8bit blue) | |||
| tfRGBA8ub4, //< 1 x unsigned byte (red), 1 x unsigned byte (green), 1 x unsigned byte (blue), 1 x unsigned byte (alpha) | |||
| tfRGB10A2ui1, //< 1 x unsigned int (10bit red, 10bit green, 10bit blue, 2bit alpha) | |||
| tfA2RGB10ui1, //< 1 x unsigned int (2bit alpha, 10bit red, 10bit green, 10bit blue) | |||
| tfRGBA16us4, //< 1 x unsigned short (red), 1 x unsigned short (green), 1 x unsigned short (blue), 1 x unsigned short (alpha) | |||
| @@ -274,9 +274,9 @@ type | |||
| tfABGR4us1, //< 1 x unsigned short (4bit alpha, 4bit blue, 4bit green, 4bit red) | |||
| tfBGR5A1us1, //< 1 x unsigned short (5bit blue, 5bit green, 5bit red, 1bit alpha) | |||
| tfA1BGR5us1, //< 1 x unsigned short (1bit alpha, 5bit blue, 5bit green, 5bit red) | |||
| tfBGRA8ub4, //< 1 x unsigned byte (blue), 1 x unsigned byte (green), 1 x unsigned byte (red), 1 x unsigned byte (alpha) | |||
| tfBGRA8ui1, //< 1 x unsigned int (8bit blue, 8bit green, 8bit red, 8bit alpha) | |||
| tfABGR8ui1, //< 1 x unsigned int (8bit alpha, 8bit blue, 8bit green, 8bit red) | |||
| tfBGRA8ub4, //< 1 x unsigned byte (blue), 1 x unsigned byte (green), 1 x unsigned byte (red), 1 x unsigned byte (alpha) | |||
| tfBGR10A2ui1, //< 1 x unsigned int (10bit blue, 10bit green, 10bit red, 2bit alpha) | |||
| tfA2BGR10ui1, //< 1 x unsigned int (2bit alpha, 10bit blue, 10bit green, 10bit red) | |||
| tfBGRA16us4, //< 1 x unsigned short (blue), 1 x unsigned short (green), 1 x unsigned short (red), 1 x unsigned short (alpha) | |||
| @@ -455,7 +455,12 @@ type | |||
| { get the format descriptor by a given OpenGL internal format | |||
| @param aInternalFormat OpenGL internal format to get format descriptor for | |||
| @returns suitable format descriptor or tfEmpty-Descriptor } | |||
| class function GetByFormat(const aInternalFormat: GLenum): TglBitmapFormatDescriptor; | |||
| class function GetByFormat(const aInternalFormat: GLenum): TglBitmapFormatDescriptor; overload; | |||
| { get the format descriptor by the given format | |||
| @param aFormat format to get descriptor for | |||
| @return suitable format descriptor or tfEmpty-Descriptor } | |||
| class function GetByFormat(const aFormat: TglBitmapFormat): TglBitmapFormatDescriptor; overload; | |||
| end; | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| @@ -1742,9 +1747,9 @@ const | |||
| TfdARGB4us1, | |||
| TfdRGB5A1us1, | |||
| TfdA1RGB5us1, | |||
| TfdRGBA8ub4, | |||
| TfdRGBA8ui1, | |||
| TfdARGB8ui1, | |||
| TfdRGBA8ub4, | |||
| TfdRGB10A2ui1, | |||
| TfdA2RGB10ui1, | |||
| TfdRGBA16us4, | |||
| @@ -1765,9 +1770,9 @@ const | |||
| TfdABGR4us1, | |||
| TfdBGR5A1us1, | |||
| TfdA1BGR5us1, | |||
| TfdBGRA8ub4, | |||
| TfdBGRA8ui1, | |||
| TfdABGR8ui1, | |||
| TfdBGRA8ub4, | |||
| TfdBGR10A2ui1, | |||
| TfdA2BGR10ui1, | |||
| TfdBGRA16us4, | |||
| @@ -3070,7 +3075,7 @@ begin | |||
| fPrecision := glBitmapRec4ub( 4, 4, 4, 4); | |||
| fShift := glBitmapRec4ub(12, 8, 4, 0); | |||
| fglFormat := GL_RGBA; | |||
| fglInternalFormat := {$IF NOT DEFINED(OPENGL_ES) OR DEFINED(OPENGL_ES_3_0)}GL_RGBA8{$ELSE}GL_RGBA{$IFEND}; | |||
| fglInternalFormat := {$IF NOT DEFINED(OPENGL_ES) OR DEFINED(OPENGL_ES_3_0)}GL_RGBA4{$ELSE}GL_RGBA{$IFEND}; | |||
| fglDataFormat := GL_UNSIGNED_SHORT_4_4_4_4; | |||
| end; | |||
| @@ -3932,6 +3937,14 @@ begin | |||
| result := TFormatDescriptor.Get(tfEmpty); | |||
| end; | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| class function TglBitmapFormatDescriptor.GetByFormat(const aFormat: TglBitmapFormat): TglBitmapFormatDescriptor; | |||
| begin | |||
| result := TFormatDescriptor.Get(aFormat); | |||
| if not Assigned(result) then | |||
| result := TFormatDescriptor.Get(tfEmpty); | |||
| end; | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //TFormatDescriptor/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| @@ -8439,6 +8452,7 @@ begin | |||
| FormatDesc := TFormatDescriptor.Get(IntFormat); | |||
| GetMem(Temp, FormatDesc.GetSize(TempWidth, TempHeight)); | |||
| try | |||
| glPixelStorei(GL_PACK_ALIGNMENT, 1); | |||
| if FormatDesc.IsCompressed then begin | |||
| if not Assigned(glGetCompressedTexImage) then | |||
| raise EglBitmap.Create('compressed formats not supported by video adapter'); | |||