Class AITexture

  • All Implemented Interfaces:
    org.lwjgl.system.Pointer

    public class AITexture
    extends org.lwjgl.system.Struct
    Helper structure to describe an embedded texture.

    Normally textures are contained in external files but some file formats embed them directly in the model file. There are two types of embedded textures:

    • Uncompressed textures. The color data is given in an uncompressed format.
    • Compressed textures stored in a file format like png or jpg.

    The raw file bytes are given so the application must utilize an image decoder (e.g. DevIL) to get access to the actual color data.

    Embedded textures are referenced from materials using strings like "*0", "*1", etc. as the texture paths (a single asterisk character followed by the zero-based index of the texture in the AIScene::mTextures array).

    Layout

    
     struct aiTexture {
         unsigned int mWidth();
         unsigned int mHeight();
         char achFormatHint()[9];
         struct aiTexel * pcData();
         struct aiString mFilename();
     }
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  AITexture.Buffer
      An array of AITexture structs.
      • Nested classes/interfaces inherited from interface org.lwjgl.system.Pointer

        org.lwjgl.system.Pointer.Default
      • Nested classes/interfaces inherited from class org.lwjgl.system.Struct

        org.lwjgl.system.Struct.StructValidation
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int ACHFORMATHINT
      The struct member offsets.
      static int ALIGNOF
      The struct alignment in bytes.
      static int MFILENAME
      MHEIGHT
      MWIDTH
      PCDATA
      The struct member offsets.
      static int SIZEOF
      The struct size in bytes.
      • Fields inherited from interface org.lwjgl.system.Pointer

        BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE
    • Constructor Summary

      Constructors 
      Constructor Description
      AITexture​(java.nio.ByteBuffer container)
      Creates a AITexture instance at the current position of the specified ByteBuffer container.
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • MWIDTH, MHEIGHT, ACHFORMATHINT, PCDATA, MFILENAME

        The struct member offsets.
    • Constructor Detail

      • AITexture

        public AITexture​(java.nio.ByteBuffer container)
        Creates a AITexture instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • mWidth

        public int mWidth()
        Width of the texture, in pixels. If mHeight is zero the texture is compressed in a format like JPEG. In this case mWidth specifies the size of the memory area pcData is pointing to, in bytes.
      • mHeight

        public int mHeight()
        Height of the texture, in pixels. If this value is zero, pcData points to an compressed texture in any format (e.g. JPEG).
      • achFormatHint, achFormatHintString

        public java.nio.ByteBuffer achFormatHint()
        
        public java.lang.String achFormatHintString()
        
        A hint from the loader to make it easier for applications to determine the type of embedded textures.

        If mHeight != 0 this member is show how data is packed. Hint will consist of two parts: channel order and channel bitness (count of the bits for every color channel). For simple parsing by the viewer it's better to not omit absent color channel and just use 0 for bitness. For example:

        1. Image contain RGBA and 8 bit per channel, achFormatHint == "rgba8888";
        2. Image contain ARGB and 8 bit per channel, achFormatHint == "argb8888";
        3. Image contain RGB and 5 bit for R and B channels and 6 bit for G channel, achFormatHint == "rgba5650";
        4. One color image with B channel and 1 bit for it, achFormatHint == "rgba0010";

        If mHeight == 0 then achFormatHint is set set to '\0\0\0\0' if the loader has no additional information about the texture file format used OR the file extension of the format without a trailing dot. If there are multiple file extensions for a format, the shortest extension is chosen (JPEG maps to 'jpg', not to 'jpeg'). E.g. 'dds\0', 'pcx\0', 'jpg\0'. All characters are lower-case. The fourth character will always be '\0'.

      • pcData

        public AITexel.Buffer pcData()
        Data of the texture.

        Points to an array of mWidth * mHeight AITexel's. The format of the texture data is always ARGB8888 to make the implementation for user of the library as easy as possible. If mHeight = 0 this is a pointer to a memory buffer of size mWidth containing the compressed texture data. Good luck, have fun!

      • mFilename

        public AIString mFilename()
        texture original filename. Used to get the texture reference.
      • create

        public static AITexture create​(long address)
        Returns a new AITexture instance for the specified memory address.
      • createSafe

        @Nullable
        public static AITexture createSafe​(long address)
        Like create, but returns null if address is NULL.
      • create

        public static AITexture.Buffer create​(long address,
                                              int capacity)
        Create a AITexture.Buffer instance at the specified memory.
        Parameters:
        address - the memory address
        capacity - the buffer capacity
      • createSafe

        @Nullable
        public static AITexture.Buffer createSafe​(long address,
                                                  int capacity)
        Like create, but returns null if address is NULL.
      • nmWidth

        public static int nmWidth​(long struct)
        Unsafe version of mWidth().
      • nmHeight

        public static int nmHeight​(long struct)
        Unsafe version of mHeight().
      • nachFormatHint

        public static java.nio.ByteBuffer nachFormatHint​(long struct)
        Unsafe version of achFormatHint().
      • nachFormatHintString

        public static java.lang.String nachFormatHintString​(long struct)
        Unsafe version of achFormatHintString().
      • nmFilename

        public static AIString nmFilename​(long struct)
        Unsafe version of mFilename().
      • pcDataCompressed

        public java.nio.ByteBuffer pcDataCompressed()
        Returns a char * view of the array pointed to by the pcData field.
      • npcDataCompressed

        public static java.nio.ByteBuffer npcDataCompressed​(long struct)
        Unsafe version of pcDataCompressed().