Remove usage of all deprecated image formats

experimental
shadowislord 10 years ago
parent b7a4faebf0
commit 62cfbc8a3e
  1. 3
      jme3-android/src/main/java/com/jme3/asset/AndroidImageInfo.java
  2. 11
      jme3-android/src/main/java/com/jme3/renderer/android/TextureUtil.java
  3. 5
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/CombinedTexture.java
  4. 21
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java
  5. 2
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderLuminance.java
  6. 19
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/AWTPixelInputOutput.java
  7. 14
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/LuminancePixelInputOutput.java
  8. 5
      jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/PixelIOFactory.java
  9. 9
      jme3-core/src/main/java/com/jme3/renderer/Caps.java
  10. 23
      jme3-core/src/main/java/com/jme3/texture/image/ImageCodec.java
  11. 21
      jme3-core/src/plugins/java/com/jme3/texture/plugins/DDSLoader.java
  12. 2
      jme3-core/src/plugins/java/com/jme3/texture/plugins/DXTFlipper.java
  13. 8
      jme3-desktop/src/main/java/com/jme3/texture/plugins/AWTLoader.java
  14. 11
      jme3-desktop/src/main/java/jme3tools/converters/ImageToAwt.java
  15. 19
      jme3-examples/src/main/java/jme3test/texture/TestImageRaster.java
  16. 4
      jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglRenderer.java
  17. 18
      jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/TextureUtil.java

@ -105,9 +105,6 @@ public class AndroidImageInfo extends ImageRaster {
case ALPHA_8:
format = Image.Format.Alpha8;
break;
case ARGB_4444:
format = Image.Format.ARGB4444;
break;
case ARGB_8888:
format = Image.Format.RGBA8;
break;

@ -269,12 +269,6 @@ public class TextureUtil {
throws UnsupportedOperationException {
AndroidGLImageFormat imageFormat = new AndroidGLImageFormat();
switch (fmt) {
case RGBA16:
case RGB16:
case RGB10:
case Luminance16:
case Luminance16Alpha16:
case Alpha16:
case Depth32:
case Depth32F:
throw new UnsupportedOperationException("The image format '"
@ -313,11 +307,6 @@ public class TextureUtil {
imageFormat.dataType = GLES20.GL_UNSIGNED_SHORT_5_6_5;
imageFormat.renderBufferStorageFormat = GLES20.GL_RGB565;
break;
case ARGB4444:
imageFormat.format = GLES20.GL_RGBA4;
imageFormat.dataType = GLES20.GL_UNSIGNED_SHORT_4_4_4_4;
imageFormat.renderBufferStorageFormat = GLES20.GL_RGBA4;
break;
case RGB5A1:
imageFormat.format = GLES20.GL_RGBA;
imageFormat.dataType = GLES20.GL_UNSIGNED_SHORT_5_5_5_1;

@ -434,13 +434,10 @@ public class CombinedTexture {
switch (image.getFormat()) {
case BGR8:
case DXT1:
case Luminance16:
case Luminance16F:
case Luminance32F:
case Luminance8:
case RGB10:
case RGB111110F:
case RGB16:
case RGB16F:
case RGB32F:
case RGB565:
@ -449,10 +446,8 @@ public class CombinedTexture {
case ABGR8:
case DXT3:
case DXT5:
case Luminance16Alpha16:
case Luminance16FAlpha16F:
case Luminance8Alpha8:
case RGBA16:
case RGBA16F:
case RGBA32F:
case RGBA8:// with these types it is better to make sure if the texture is or is not transparent

@ -71,8 +71,6 @@ public class TextureBlenderFactory {
switch (format) {
case Luminance8:
case Luminance8Alpha8:
case Luminance16:
case Luminance16Alpha16:
case Luminance16F:
case Luminance16FAlpha16F:
case Luminance32F:
@ -81,9 +79,7 @@ public class TextureBlenderFactory {
case ABGR8:
case BGR8:
case RGB8:
case RGB10:
case RGB111110F:
case RGB16:
case RGB16F:
case RGB16F_to_RGB111110F:
case RGB16F_to_RGB9E5:
@ -91,7 +87,6 @@ public class TextureBlenderFactory {
case RGB565:
case RGB5A1:
case RGB9E5:
case RGBA16:
case RGBA16F:
case RGBA32F:
return new TextureBlenderAWT(flag, negate, blendType, materialColor, color, colfac);
@ -100,23 +95,9 @@ public class TextureBlenderFactory {
case DXT3:
case DXT5:
return new TextureBlenderDDS(flag, negate, blendType, materialColor, color, colfac);
case Alpha16:
case Alpha8:
case ARGB4444:
case Depth:
case Depth16:
case Depth24:
case Depth32:
case Depth32F:
case Intensity16:
case Intensity8:
case LATC:
case LTC:
case Depth24Stencil8:
default:
LOGGER.log(Level.WARNING, "Image type not yet supported for blending: {0}. Returning a blender that does not change the texture.", format);
return NON_CHANGING_BLENDER;
default:
throw new IllegalStateException("Unknown image format type: " + format);
}
}

@ -125,8 +125,6 @@ public class TextureBlenderLuminance extends AbstractTextureBlender {
pixelValue = data.get();
result[1] = pixelValue >= 0 ? pixelValue / 255.0f : 1.0f - ~pixelValue / 255.0f;
break;
case Luminance16:
case Luminance16Alpha16:
case Luminance16F:
case Luminance16FAlpha16F:
case Luminance32F:

@ -37,12 +37,6 @@ import jme3tools.converters.RGB565;
int b = (rgb5a1 & 0x001f) >> 1 << 3;
pixel.fromARGB8(a == 1 ? (byte) 255 : 0, (byte) r, (byte) g, (byte) b);
break;
case RGB16:
pixel.fromARGB16((short) 0xFFFF, data.getShort(index), data.getShort(index + 2), data.getShort(index + 4));
break;
case RGBA16:
pixel.fromARGB16(data.getShort(index + 6), data.getShort(index), data.getShort(index + 2), data.getShort(index + 4));
break;
case RGB16F:
case RGB16F_to_RGB111110F:
case RGB16F_to_RGB9E5:
@ -57,7 +51,6 @@ import jme3tools.converters.RGB565;
case RGB111110F:// the data is stored as 32-bit unsigned int, that is why we cast the read data to long and remove MSB-bytes to get the positive value
pixel.fromARGB(1, (float) Double.longBitsToDouble((long) data.getInt(index) & 0x00000000FFFFFFFF), (float) Double.longBitsToDouble((long) data.getInt(index + 4) & 0x00000000FFFFFFFF), (float) Double.longBitsToDouble((long) data.getInt(index + 8) & 0x00000000FFFFFFFF));
break;
case RGB10:
case RGB9E5:// TODO: support these
throw new IllegalStateException("Not supported image type for IO operations: " + image.getFormat());
default:
@ -106,17 +99,6 @@ import jme3tools.converters.RGB565;
short a = (short) ((short) ((argb8 & 0xFF000000) >> 24) > 0 ? 1 : 0);
data.putShort(index, (short) (r | g | b | a));
break;
case RGB16:
data.putShort(index, pixel.getR16());
data.putShort(index + 2, pixel.getG16());
data.putShort(index + 4, pixel.getB16());
break;
case RGBA16:
data.putShort(index, pixel.getR16());
data.putShort(index + 2, pixel.getG16());
data.putShort(index + 4, pixel.getB16());
data.putShort(index + 6, pixel.getA16());
break;
case RGB16F:
case RGB16F_to_RGB111110F:
case RGB16F_to_RGB9E5:
@ -142,7 +124,6 @@ import jme3tools.converters.RGB565;
data.putInt(index + 4, Float.floatToIntBits(pixel.blue));
data.putInt(index + 6, Float.floatToIntBits(pixel.alpha));
break;
case RGB10:
case RGB9E5:// TODO: support these
throw new IllegalStateException("Not supported image type for IO operations: " + image.getFormat());
default:

@ -21,13 +21,6 @@ import java.nio.ByteBuffer;
pixel.fromIntensity(data.get(index));
pixel.setAlpha(data.get(index + 1));
break;
case Luminance16:
pixel.fromIntensity(data.getShort(index));
break;
case Luminance16Alpha16:
pixel.fromIntensity(data.getShort(index));
pixel.setAlpha(data.getShort(index + 2));
break;
case Luminance16F:
pixel.intensity = FastMath.convertHalfToFloat(data.getShort(index));
break;
@ -59,13 +52,6 @@ import java.nio.ByteBuffer;
data.put(index, pixel.getInt());
data.put(index + 1, pixel.getA8());
break;
case Luminance16:
data.putShort(index, (short) (pixel.intensity * 65535.0f));
break;
case Luminance16Alpha16:
data.putShort(index, (short) (pixel.intensity * 65535.0f));
data.putShort(index + 2, (short) (pixel.alpha * 65535.0f));
break;
case Luminance16F:
data.putShort(index, FastMath.convertFloatToHalf(pixel.intensity));
break;

@ -27,9 +27,7 @@ public class PixelIOFactory {
case RGBA8:
case BGR8:
case RGB8:
case RGB10:
case RGB111110F:
case RGB16:
case RGB16F:
case RGB16F_to_RGB111110F:
case RGB16F_to_RGB9E5:
@ -37,14 +35,11 @@ public class PixelIOFactory {
case RGB565:
case RGB5A1:
case RGB9E5:
case RGBA16:
case RGBA16F:
case RGBA32F:
result = new AWTPixelInputOutput();
break;
case Luminance8:
case Luminance16:
case Luminance16Alpha16:
case Luminance16F:
case Luminance16FAlpha16F:
case Luminance32F:

@ -204,11 +204,8 @@ public enum Caps {
*/
SharedExponentColorBuffer,
/**
* Supports Format.LATC for textures, this includes
* support for ATI's 3Dc texture compression.
*/
TextureCompressionLATC,
@Deprecated
Reserved1,
/**
* Supports Non-Power-Of-Two (NPOT) textures and framebuffers
@ -285,8 +282,6 @@ public enum Caps {
return caps.contains(Caps.PackedDepthStencilBuffer);
case Depth32F:
return caps.contains(Caps.FloatDepthBuffer);
case LATC:
return caps.contains(Caps.TextureCompressionLATC);
case RGB16F_to_RGB111110F:
case RGB111110F:
return caps.contains(Caps.PackedFloatTexture);

@ -61,17 +61,12 @@ abstract class ImageCodec {
params.put(Format.Alpha8, new ByteOffsetImageCodec(1, 0, 0, -1, -1, -1));
params.put(Format.Alpha16, new BitMaskImageCodec(2, 0, 16, 0, 0, 0,
0, 0, 0, 0));
// == LUMINANCE ==
// params.put(Format.Luminance8, new BitMaskImageCodec(1, FLAG_GRAY, 0, 8, 0, 0,
// 0, 0, 0, 0));
params.put(Format.Luminance8, new ByteOffsetImageCodec(1, FLAG_GRAY, -1, 0, -1, -1));
params.put(Format.Luminance16, new BitMaskImageCodec(2, FLAG_GRAY, 0, 16, 0, 0,
0, 0, 0, 0));
params.put(Format.Luminance16F, new BitMaskImageCodec(2, FLAG_GRAY | FLAG_F16, 0, 16, 0, 0,
0, 0, 0, 0));
params.put(Format.Luminance32F, new BitMaskImageCodec(4, FLAG_GRAY | FLAG_F32, 0, 32, 0, 0,
@ -87,10 +82,6 @@ abstract class ImageCodec {
params.put(Format.Luminance8Alpha8, new ByteOffsetImageCodec(2, FLAG_GRAY, 1, 0, -1, -1));
params.put(Format.Luminance16Alpha16, new BitMaskImageCodec(4, FLAG_GRAY,
16, 16, 0, 0,
16, 0, 0, 0));
params.put(Format.Luminance16FAlpha16F, new BitMaskImageCodec(4, FLAG_GRAY | FLAG_F16,
16, 16, 0, 0,
16, 0, 0, 0));
@ -111,10 +102,6 @@ abstract class ImageCodec {
// 0, 0, 8, 16));
params.put(Format.RGB8, new ByteOffsetImageCodec(3, 0, -1, 0, 1, 2));
params.put(Format.RGB16, new ByteAlignedImageCodec(6, 0,
0, 2, 2, 2,
0, 0, 2, 4));
params.put(Format.RGB32F, new ByteAlignedImageCodec(12, FLAG_F32,
0, 4, 4, 4,
@ -137,11 +124,7 @@ abstract class ImageCodec {
params.put(Format.ARGB8, new ByteOffsetImageCodec(4, 0, 0, 1, 2, 3));
params.put(Format.BGRA8, new ByteOffsetImageCodec(4, 0, 3, 2, 1, 0));
params.put(Format.ARGB4444, new BitMaskImageCodec(2, 0,
4, 4, 4, 4,
12, 0, 4, 8));
params.put(Format.RGB5A1, new BitMaskImageCodec(2, 0,
1, 5, 5, 5,
0, 11, 6, 1));
@ -157,10 +140,6 @@ abstract class ImageCodec {
params.put(Format.RGBA8, new ByteOffsetImageCodec(4, 0, 3, 0, 1, 2));
params.put(Format.RGBA16, new ByteAlignedImageCodec(8, 0,
2, 2, 2, 2,
6, 0, 2, 4));
params.put(Format.RGBA16F, new ByteAlignedImageCodec(8, FLAG_F16,
2, 2, 2, 2,
6, 0, 2, 4));

@ -150,12 +150,12 @@ public class DDSLoader implements AssetLoader {
private void loadDX10Header() throws IOException {
int dxgiFormat = in.readInt();
if (dxgiFormat != 83) {
throw new IOException("Only DXGI_FORMAT_BC5_UNORM "
+ "is supported for DirectX10 DDS! Got: " + dxgiFormat);
if (dxgiFormat == 0) {
pixelFormat = Format.ETC1;
bpp = 4;
} else {
throw new IOException("Unsupported DX10 format: " + dxgiFormat);
}
pixelFormat = Format.LATC;
bpp = 8;
compressed = true;
int resDim = in.readInt();
@ -280,6 +280,7 @@ public class DDSLoader implements AssetLoader {
normal = true;
}
break;
/*
case PF_ATI1:
bpp = 4;
pixelFormat = Image.Format.LTC;
@ -288,6 +289,7 @@ public class DDSLoader implements AssetLoader {
bpp = 8;
pixelFormat = Image.Format.LATC;
break;
*/
case PF_DX10:
compressed = false;
directx10 = true;
@ -334,9 +336,6 @@ public class DDSLoader implements AssetLoader {
case 16:
pixelFormat = Format.Luminance8Alpha8;
break;
case 32:
pixelFormat = Format.Luminance16Alpha16;
break;
default:
throw new IOException("Unsupported GrayscaleAlpha BPP: " + bpp);
}
@ -346,9 +345,6 @@ public class DDSLoader implements AssetLoader {
case 8:
pixelFormat = Format.Luminance8;
break;
case 16:
pixelFormat = Format.Luminance16;
break;
default:
throw new IOException("Unsupported Grayscale BPP: " + bpp);
}
@ -358,9 +354,6 @@ public class DDSLoader implements AssetLoader {
case 8:
pixelFormat = Format.Alpha8;
break;
case 16:
pixelFormat = Format.Alpha16;
break;
default:
throw new IOException("Unsupported Alpha BPP: " + bpp);
}

@ -213,12 +213,14 @@ public class DXTFlipper {
case DXT5:
type = 3;
break;
/*
case LATC:
type = 4;
break;
case LTC:
type = 5;
break;
*/
default:
throw new IllegalArgumentException();
}

@ -128,14 +128,6 @@ public class AWTLoader implements AssetLoader {
ByteBuffer data3 = BufferUtils.createByteBuffer(img.getWidth()*img.getHeight());
data3.put(dataBuf3);
return new Image(Format.Luminance8, width, height, data3, null, com.jme3.texture.image.ColorSpace.sRGB);
case BufferedImage.TYPE_USHORT_GRAY: // grayscale heightmap
short[] dataBuf4 = (short[]) extractImageData(img);
if (flipY)
flipImage(dataBuf4, width, height, 16);
ByteBuffer data4 = BufferUtils.createByteBuffer(img.getWidth()*img.getHeight()*2);
data4.asShortBuffer().put(dataBuf4);
return new Image(Format.Luminance16, width, height, data4, null, com.jme3.texture.image.ColorSpace.sRGB);
default:
break;
}

@ -141,19 +141,14 @@ public class ImageToAwt {
params.put(Format.ABGR8, new DecodeParams(4, mx___, m___x, m__x_, m_x__,
sx___, s___x, s__x_, s_x__,
mxxxx, sxxxx));
params.put(Format.ARGB4444, new DecodeParams(2, m4x___, m4_x__, m4__x_, m4___x,
s4x___, s4_x__, s4__x_, s4___x,
mxxxx, sxxxx));
params.put(Format.Alpha16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, true));
params.put(Format.Alpha8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, true));
params.put(Format.BGR8, new DecodeParams(3, 0, m___x, m__x_, m_x__,
0, s___x, s__x_, s_x__,
mxxxx, sxxxx));
params.put(Format.Luminance16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false));
params.put(Format.Luminance8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, false));
params.put(Format.Luminance16Alpha16, new DecodeParams(4, m__xx, mxx__, 0, 0,
s__xx, sxx__, 0, 0,
mxxxx, sxxxx));
params.put(Format.Luminance16F, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false));
params.put(Format.Luminance16FAlpha16F, new DecodeParams(4, m__xx, mxx__, 0, 0,
s__xx, sxx__, 0, 0,

@ -115,12 +115,6 @@ public class TestImageRaster extends SimpleApplication {
image = convertImage(image, Format.RGB16F_to_RGB111110F);
convertAndPutImage(image, 25, 0);
image = convertImage(image, Format.RGBA16);
convertAndPutImage(image, 0, 5);
image = convertImage(image, Format.RGB16);
convertAndPutImage(image, 5, 5);
image = convertImage(image, Format.RGBA8);
convertAndPutImage(image, 10, 5);
@ -142,9 +136,6 @@ public class TestImageRaster extends SimpleApplication {
image = convertImage(image, Format.RGB5A1);
convertAndPutImage(image, 0, 10);
image = convertImage(image, Format.ARGB4444);
convertAndPutImage(image, 5, 10);
image = convertImage(image, Format.Luminance32F);
convertAndPutImage(image, 0, 15);
@ -154,17 +145,11 @@ public class TestImageRaster extends SimpleApplication {
image = convertImage(image, Format.Luminance16F);
convertAndPutImage(image, 10, 15);
image = convertImage(image, Format.Luminance16Alpha16);
convertAndPutImage(image, 15, 15);
image = convertImage(image, Format.Luminance16);
convertAndPutImage(image, 20, 15);
image = convertImage(image, Format.Luminance8Alpha8);
convertAndPutImage(image, 25, 15);
convertAndPutImage(image, 15, 15);
image = convertImage(image, Format.Luminance8);
convertAndPutImage(image, 30, 15);
convertAndPutImage(image, 20, 15);
}
public static void main(String[] args) {

@ -353,10 +353,6 @@ public class LwjglRenderer implements Renderer {
caps.add(Caps.TextureCompressionS3TC);
}
if (hasExtension("GL_EXT_texture_compression_latc")) {
caps.add(Caps.TextureCompressionLATC);
}
if (hasExtension("GL_ARB_ES3_compatibility")) {
caps.add(Caps.TextureCompressionETC1);
}

@ -84,17 +84,14 @@ class TextureUtil {
static {
// Alpha formats
setFormat(Format.Alpha8, GL_ALPHA8, GL_ALPHA, GL_UNSIGNED_BYTE, false);
setFormat(Format.Alpha16, GL_ALPHA16, GL_ALPHA, GL_UNSIGNED_SHORT, false);
// Luminance formats
setFormat(Format.Luminance8, GL_LUMINANCE8, GL_LUMINANCE, GL_UNSIGNED_BYTE, false);
setFormat(Format.Luminance16, GL_LUMINANCE16, GL_LUMINANCE, GL_UNSIGNED_SHORT, false);
setFormat(Format.Luminance16F, GL_LUMINANCE16F_ARB, GL_LUMINANCE, GL_HALF_FLOAT_ARB, false);
setFormat(Format.Luminance32F, GL_LUMINANCE32F_ARB, GL_LUMINANCE, GL_FLOAT, false);
// Luminance alpha formats
setFormat(Format.Luminance8Alpha8, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, false);
setFormat(Format.Luminance16Alpha16, GL_LUMINANCE16_ALPHA16, GL_LUMINANCE_ALPHA, GL_UNSIGNED_SHORT, false);
setFormat(Format.Luminance16FAlpha16F, GL_LUMINANCE_ALPHA16F_ARB, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_ARB, false);
// Depth formats
@ -112,8 +109,6 @@ class TextureUtil {
setFormat(Format.ARGB8, GL_RGBA8, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, false);
setFormat(Format.BGRA8, GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE, false);
setFormat(Format.RGB8, GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE, false);
// setFormat(Format.RGB10, GL_RGB10, GL_RGB, GL_UNSIGNED_INT_10_10_10_2, false);
setFormat(Format.RGB16, GL_RGB16, GL_RGB, GL_UNSIGNED_SHORT, false);
setFormat(Format.RGB16F, GL_RGB16F_ARB, GL_RGB, GL_HALF_FLOAT_ARB, false);
setFormat(Format.RGB32F, GL_RGB32F_ARB, GL_RGB, GL_FLOAT, false);
@ -122,14 +117,11 @@ class TextureUtil {
setFormat(Format.RGB9E5, GL_RGB9_E5_EXT, GL_RGB, GL_UNSIGNED_INT_5_9_9_9_REV_EXT, false);
setFormat(Format.RGB16F_to_RGB111110F, GL_R11F_G11F_B10F_EXT, GL_RGB, GL_HALF_FLOAT_ARB, false);
setFormat(Format.RGB16F_to_RGB9E5, GL_RGB9_E5_EXT, GL_RGB, GL_HALF_FLOAT_ARB, false);
setFormat(Format.RGB10_A2, GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, false);
// RGBA formats
setFormat(Format.ABGR8, GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, false);
setFormat(Format.RGB5A1, GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false);
setFormat(Format.ARGB4444,GL_RGBA4, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, false);
setFormat(Format.RGBA8, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, false);
setFormat(Format.RGBA16, GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT, false); // might be incorrect
setFormat(Format.RGBA16F, GL_RGBA16F_ARB, GL_RGBA, GL_HALF_FLOAT_ARB, false);
setFormat(Format.RGBA32F, GL_RGBA32F_ARB, GL_RGBA, GL_FLOAT, false);
@ -139,10 +131,6 @@ class TextureUtil {
setFormat(Format.DXT3, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_RGBA, GL_UNSIGNED_BYTE, true);
setFormat(Format.DXT5, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_RGBA, GL_UNSIGNED_BYTE, true);
// LTC/LATC/3Dc formats
setFormat(Format.LTC, GL_COMPRESSED_LUMINANCE_LATC1_EXT, GL_LUMINANCE, GL_UNSIGNED_BYTE, true);
setFormat(Format.LATC, GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, true);
// ETC1 support on regular OpenGL requires ES3 compatibility extension.
// NOTE: ETC2 is backwards compatible with ETC1, so we can
// upload ETC1 textures as ETC2.
@ -199,12 +187,6 @@ class TextureUtil {
return null;
}
break;
case LATC:
case LTC:
if (!caps.contains(Caps.TextureCompressionLATC)){
return null;
}
break;
case RGB9E5:
case RGB16F_to_RGB9E5:
if (!caps.contains(Caps.SharedExponentTexture)){

Loading…
Cancel
Save