Class DDSImage

java.lang.Object
com.jogamp.opengl.util.texture.spi.DDSImage

public class DDSImage extends Object
A reader and writer for DirectDraw Surface (.dds) files, which are used to describe textures. These files can contain multiple mipmap levels in one file. This class is currently minimal and does not support all of the possible file formats.
  • Field Details

  • Method Details

    • read

      public static DDSImage read(String filename) throws IOException
      Reads a DirectDraw surface from the specified file name, returning the resulting DDSImage.
      Parameters:
      filename - File name
      Returns:
      DDS image object
      Throws:
      IOException - if an I/O exception occurred
    • read

      public static DDSImage read(File file) throws IOException
      Reads a DirectDraw surface from the specified file, returning the resulting DDSImage.
      Parameters:
      file - File object
      Returns:
      DDS image object
      Throws:
      IOException - if an I/O exception occurred
    • read

      public static DDSImage read(ByteBuffer buf) throws IOException
      Reads a DirectDraw surface from the specified ByteBuffer, returning the resulting DDSImage.
      Parameters:
      buf - Input data
      Returns:
      DDS image object
      Throws:
      IOException - if an I/O exception occurred
    • close

      public void close()
      Closes open files and resources associated with the open DDSImage. No other methods may be called on this object once this is called.
    • createFromData

      public static DDSImage createFromData(int d3dFormat, int width, int height, ByteBuffer[] mipmapData) throws IllegalArgumentException
      Creates a new DDSImage from data supplied by the user. The resulting DDSImage can be written to disk using the write() method.
      Parameters:
      d3dFormat - the D3DFMT_ constant describing the data; it is assumed that it is packed tightly
      width - the width in pixels of the topmost mipmap image
      height - the height in pixels of the topmost mipmap image
      mipmapData - the data for each mipmap level of the resulting DDSImage; either only one mipmap level should be specified, or they all must be
      Returns:
      DDS image object
      Throws:
      IllegalArgumentException - if the data does not match the specified arguments
    • isDDSImage

      @Deprecated public static boolean isDDSImage(InputStream in) throws IOException
      Deprecated.
      rather call ImageType#getFileSuffix(InputStream)
      Determines from the magic number whether the given InputStream points to a DDS image. The given InputStream must return true from markSupported() and support a minimum of four bytes of read-ahead.
      Parameters:
      in - Stream to check
      Returns:
      true if input stream is DDS image or false otherwise
      Throws:
      IOException - if an I/O exception occurred
    • write

      public void write(String filename) throws IOException
      Writes this DDSImage to the specified file name.
      Parameters:
      filename - File name to write to
      Throws:
      IOException - if an I/O exception occurred
    • write

      public void write(File file) throws IOException
      Writes this DDSImage to the specified file name.
      Parameters:
      file - File object to write to
      Throws:
      IOException - if an I/O exception occurred
    • isSurfaceDescFlagSet

      public boolean isSurfaceDescFlagSet(int flag)
      Test for presence/absence of surface description flags (DDSD_*)
      Parameters:
      flag - DDSD_* flags set to test
      Returns:
      true if flag present or false otherwise
    • isPixelFormatFlagSet

      public boolean isPixelFormatFlagSet(int flag)
      Test for presence/absence of pixel format flags (DDPF_*)
    • getPixelFormat

      public int getPixelFormat()
      Gets the pixel format of this texture (D3DFMT_*) based on some heuristics. Returns D3DFMT_UNKNOWN if could not recognize the pixel format.
    • isCubemap

      public boolean isCubemap()
      Indicates whether this texture is cubemap
      Returns:
      true if cubemap or false otherwise
    • isCubemapSidePresent

      public boolean isCubemapSidePresent(int side)
      Indicates whethe this cubemap side present
      Parameters:
      side - Side to test
      Returns:
      true if side present or false otherwise
    • isCompressed

      public boolean isCompressed()
      Indicates whether this texture is compressed.
    • getCompressionFormat

      public int getCompressionFormat()
      If this surface is compressed, returns the kind of compression used (DXT1..DXT5).
    • getWidth

      public int getWidth()
      Width of the texture (or the top-most mipmap if mipmaps are present)
    • getHeight

      public int getHeight()
      Height of the texture (or the top-most mipmap if mipmaps are present)
    • getDepth

      public int getDepth()
      Total number of bits per pixel. Only valid if DDPF_RGB is present. For A8R8G8B8, would be 32.
    • getNumMipMaps

      public int getNumMipMaps()
      Number of mip maps in the texture
    • getMipMap

      public DDSImage.ImageInfo getMipMap(int map)
      Gets the ith mipmap data (0..getNumMipMaps() - 1)
      Parameters:
      map - Mipmap index
      Returns:
      Image object
    • getMipMap

      public DDSImage.ImageInfo getMipMap(int side, int map)
      Gets the ith mipmap data (0..getNumMipMaps() - 1)
      Parameters:
      side - Cubemap side or 0 for 2D texture
      map - Mipmap index
      Returns:
      Image object
    • getAllMipMaps

      public DDSImage.ImageInfo[] getAllMipMaps()
      Returns an array of ImageInfos corresponding to all mipmap levels of this DDS file.
      Returns:
      Mipmap image objects set
    • getAllMipMaps

      public DDSImage.ImageInfo[] getAllMipMaps(int side)
      Returns an array of ImageInfos corresponding to all mipmap levels of this DDS file.
      Parameters:
      side - Cubemap side or 0 for 2D texture
      Returns:
      Mipmap image objects set
    • getCompressionFormatName

      public static String getCompressionFormatName(int compressionFormat)
      Converts e.g. DXT1 compression format constant (see getCompressionFormat()) into "DXT1".
      Parameters:
      compressionFormat - Compression format constant
      Returns:
      String format code
    • allocateBlankBuffer

      public static ByteBuffer allocateBlankBuffer(int width, int height, int openGLInternalFormat)
      Allocates a temporary, empty ByteBuffer suitable for use in a call to glCompressedTexImage2D. This is used by the Texture class to expand non-power-of-two DDS compressed textures to power-of-two sizes on hardware not supporting OpenGL 2.0 and the NPOT texture extension. The specified OpenGL internal format must be one of GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, or GL_COMPRESSED_RGBA_S3TC_DXT5_EXT.
    • debugPrint

      public void debugPrint()