|
|
|
@ -42,10 +42,10 @@ import java.util.EnumSet; |
|
|
|
|
import java.util.logging.Level; |
|
|
|
|
import java.util.logging.Logger; |
|
|
|
|
import static org.lwjgl.opengl.ARBDepthBufferFloat.*; |
|
|
|
|
import org.lwjgl.opengl.ARBES3Compatibility; |
|
|
|
|
import static org.lwjgl.opengl.ARBHalfFloatPixel.*; |
|
|
|
|
import static org.lwjgl.opengl.ARBTextureFloat.*; |
|
|
|
|
import static org.lwjgl.opengl.ARBTextureMultisample.*; |
|
|
|
|
import org.lwjgl.opengl.ContextCapabilities; |
|
|
|
|
import static org.lwjgl.opengl.EXTPackedDepthStencil.*; |
|
|
|
|
import static org.lwjgl.opengl.EXTPackedFloat.*; |
|
|
|
|
import static org.lwjgl.opengl.EXTTextureArray.*; |
|
|
|
@ -142,6 +142,11 @@ class TextureUtil { |
|
|
|
|
// 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.
|
|
|
|
|
setFormat(Format.ETC1, ARBES3Compatibility.GL_COMPRESSED_RGB8_ETC2, GL_RGB, GL_UNSIGNED_BYTE, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//sRGB formats
|
|
|
|
@ -160,6 +165,11 @@ class TextureUtil { |
|
|
|
|
|
|
|
|
|
public static GLImageFormat getImageFormat(EnumSet<Caps> caps, Format fmt, boolean isSrgb){ |
|
|
|
|
switch (fmt){ |
|
|
|
|
case ETC1: |
|
|
|
|
if (!caps.contains(Caps.TextureCompressionETC1)) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case DXT1: |
|
|
|
|
case DXT1A: |
|
|
|
|
case DXT3: |
|
|
|
|