Class Texture

  • All Implemented Interfaces:
    PConstants

    public class Texture
    extends Object
    implements PConstants
    This class wraps an OpenGL texture. By Andres Colubri
    • Field Detail

      • TEXRECT

        protected static final int TEXRECT
        Texture with un-normalized UV.
        See Also:
        Constant Field Values
      • POINT

        protected static final int POINT
        Point sampling: both magnification and minification filtering are set to nearest
        See Also:
        Constant Field Values
      • LINEAR

        protected static final int LINEAR
        Linear sampling: magnification filtering is nearest, minification set to linear
        See Also:
        Constant Field Values
      • BILINEAR

        protected static final int BILINEAR
        Bilinear sampling: both magnification filtering is set to linear and minification either to linear-mipmap-nearest (linear interpolation is used within a mipmap, but not between different mipmaps).
        See Also:
        Constant Field Values
      • TRILINEAR

        protected static final int TRILINEAR
        Trilinear sampling: magnification filtering set to linear, minification to linear-mipmap-linear, which offers the best mipmap quality since linear interpolation to compute the value in each of two maps and then interpolates linearly between these two values.
        See Also:
        Constant Field Values
      • width

        public int width
      • height

        public int height
      • glName

        public int glName
      • glTarget

        public int glTarget
      • glFormat

        public int glFormat
      • glMinFilter

        public int glMinFilter
      • glMagFilter

        public int glMagFilter
      • glWrapS

        public int glWrapS
      • glWrapT

        public int glWrapT
      • glWidth

        public int glWidth
      • glHeight

        public int glHeight
      • pgl

        protected PGL pgl
      • context

        protected int context
      • colorBuffer

        protected boolean colorBuffer
      • usingMipmaps

        protected boolean usingMipmaps
      • usingRepeat

        protected boolean usingRepeat
      • maxTexcoordU

        protected float maxTexcoordU
      • maxTexcoordV

        protected float maxTexcoordV
      • bound

        protected boolean bound
      • invertedX

        protected boolean invertedX
      • invertedY

        protected boolean invertedY
      • rgbaPixels

        protected int[] rgbaPixels
      • pixelBuffer

        protected IntBuffer pixelBuffer
      • edgePixels

        protected int[] edgePixels
      • pixBufUpdateCount

        protected int pixBufUpdateCount
      • rgbaPixUpdateCount

        protected int rgbaPixUpdateCount
      • modified

        protected boolean modified
        Modified portion of the texture
      • mx1

        protected int mx1
      • my1

        protected int my1
      • mx2

        protected int mx2
      • my2

        protected int my2
      • bufferSource

        protected Object bufferSource
      • disposeBufferMethod

        protected Method disposeBufferMethod
    • Constructor Detail

      • Texture

        public Texture​(PGraphicsOpenGL pg,
                       int width,
                       int height)
        Creates an instance of PTexture with size width x height. The texture is initialized (empty) to that size.
        Parameters:
        width - int
        height - int
      • Texture

        public Texture​(PGraphicsOpenGL pg,
                       int width,
                       int height,
                       Object params)
        Creates an instance of PTexture with size width x height and with the specified parameters. The texture is initialized (empty) to that size.
        Parameters:
        width - int
        height - int
        params - Parameters
    • Method Detail

      • init

        public void init​(int width,
                         int height)
        Sets the size of the image and texture to width x height. If the texture is already initialized, it first destroys the current OpenGL texture object and then creates a new one with the specified size.
        Parameters:
        width - int
        height - int
      • init

        public void init​(int width,
                         int height,
                         Texture.Parameters params)
        Sets the size of the image and texture to width x height, and the parameters of the texture to params. If the texture is already initialized, it first destroys the current OpenGL texture object and then creates a new one with the specified size.
        Parameters:
        width - int
        height - int
        params - GLTextureParameters
      • init

        public void init​(int width,
                         int height,
                         int glName,
                         int glTarget,
                         int glFormat,
                         int glWidth,
                         int glHeight,
                         int glMinFilter,
                         int glMagFilter,
                         int glWrapS,
                         int glWrapT)
        Initializes the texture using GL parameters
      • resize

        public void resize​(int wide,
                           int high)
      • available

        public boolean available()
        Returns true if the texture has been initialized.
        Returns:
        boolean
      • set

        public void set​(Texture tex)
      • set

        public void set​(Texture tex,
                        int x,
                        int y,
                        int w,
                        int h)
      • set

        public void set​(int texTarget,
                        int texName,
                        int texWidth,
                        int texHeight,
                        int w,
                        int h)
      • set

        public void set​(int texTarget,
                        int texName,
                        int texWidth,
                        int texHeight,
                        int target,
                        int tex,
                        int x,
                        int y,
                        int w,
                        int h)
      • set

        public void set​(int[] pixels)
      • set

        public void set​(int[] pixels,
                        int format)
      • set

        public void set​(int[] pixels,
                        int x,
                        int y,
                        int w,
                        int h)
      • set

        public void set​(int[] pixels,
                        int x,
                        int y,
                        int w,
                        int h,
                        int format)
      • setNative

        public void setNative​(int[] pixels)
      • setNative

        public void setNative​(int[] pixels,
                              int x,
                              int y,
                              int w,
                              int h)
      • setNative

        public void setNative​(IntBuffer pixBuf,
                              int x,
                              int y,
                              int w,
                              int h)
      • get

        public void get​(int[] pixels)
        Copy texture to pixels. Involves video memory to main memory transfer (slow).
      • put

        public void put​(Texture tex)
      • put

        public void put​(Texture tex,
                        int x,
                        int y,
                        int w,
                        int h)
      • put

        public void put​(int texTarget,
                        int texName,
                        int texWidth,
                        int texHeight,
                        int w,
                        int h)
      • put

        public void put​(int texTarget,
                        int texName,
                        int texWidth,
                        int texHeight,
                        int target,
                        int tex,
                        int x,
                        int y,
                        int w,
                        int h)
      • usingMipmaps

        public boolean usingMipmaps()
        Returns true or false whether or not the texture is using mipmaps.
        Returns:
        boolean
      • usingMipmaps

        public void usingMipmaps​(boolean mipmaps,
                                 int sampling)
      • usingRepeat

        public boolean usingRepeat()
        Returns true or false whether or not the texture is using repeat wrap mode along either U or V directions.
        Returns:
        boolean
      • usingRepeat

        public void usingRepeat​(boolean repeat)
      • maxTexcoordU

        public float maxTexcoordU()
        Returns the maximum possible value for the texture coordinate U (horizontal).
        Returns:
        float
      • maxTexcoordV

        public float maxTexcoordV()
        Returns the maximum possible value for the texture coordinate V (vertical).
        Returns:
        float
      • invertedX

        public boolean invertedX()
        Returns true if the texture is inverted along the horizontal direction.
        Returns:
        boolean;
      • invertedX

        public void invertedX​(boolean v)
        Sets the texture as inverted or not along the horizontal direction.
        Parameters:
        v - boolean;
      • invertedY

        public boolean invertedY()
        Returns true if the texture is inverted along the vertical direction.
        Returns:
        boolean;
      • invertedY

        public void invertedY​(boolean v)
        Sets the texture as inverted or not along the vertical direction.
        Parameters:
        v - boolean;
      • currentSampling

        public int currentSampling()
      • bind

        public void bind()
      • unbind

        public void unbind()
      • bound

        public boolean bound()
      • isModified

        public boolean isModified()
      • setModified

        public void setModified()
      • setModified

        public void setModified​(boolean m)
      • getModifiedX1

        public int getModifiedX1()
      • getModifiedX2

        public int getModifiedX2()
      • getModifiedY1

        public int getModifiedY1()
      • getModifiedY2

        public int getModifiedY2()
      • updateTexels

        public void updateTexels()
      • updateTexels

        public void updateTexels​(int x,
                                 int y,
                                 int w,
                                 int h)
      • updateTexelsImpl

        protected void updateTexelsImpl​(int x,
                                        int y,
                                        int w,
                                        int h)
      • loadPixels

        protected void loadPixels​(int len)
      • updatePixelBuffer

        protected void updatePixelBuffer​(int[] pixels)
      • manualMipmap

        protected void manualMipmap()
      • setBufferSource

        public void setBufferSource​(Object source)
      • copyBufferFromSource

        public void copyBufferFromSource​(Object natRef,
                                         ByteBuffer byteBuf,
                                         int w,
                                         int h)
      • disposeSourceBuffer

        public void disposeSourceBuffer()
      • getBufferPixels

        public void getBufferPixels​(int[] pixels)
      • hasBufferSource

        public boolean hasBufferSource()
      • hasBuffers

        public boolean hasBuffers()
      • bufferUpdate

        protected boolean bufferUpdate()
      • getSourceMethods

        protected void getSourceMethods()
      • flipArrayOnX

        protected void flipArrayOnX​(int[] intArray,
                                    int mult)
        Flips intArray along the X axis.
        Parameters:
        intArray - int[]
        mult - int
      • flipArrayOnY

        protected void flipArrayOnY​(int[] intArray,
                                    int mult)
        Flips intArray along the Y axis.
        Parameters:
        intArray - int[]
        mult - int
      • convertToRGBA

        protected void convertToRGBA​(int[] pixels,
                                     int format,
                                     int w,
                                     int h)
        Reorders a pixel array in the given format into the order required by OpenGL (RGBA) and stores it into rgbaPixels. The width and height parameters are used in the YUV420 to RBGBA conversion.
        Parameters:
        pixels - int[]
        format - int
        w - int
        h - int
      • convertToARGB

        protected void convertToARGB​(int[] pixels)
        Reorders an OpenGL pixel array (RGBA) into ARGB. The array must be of size width * height.
        Parameters:
        pixels - int[]
      • setSize

        protected void setSize​(int w,
                               int h)
      • allocate

        protected void allocate()
        Allocates the opengl texture object.
      • dispose

        protected void dispose()
        Marks the texture object for deletion.
      • contextIsOutdated

        protected boolean contextIsOutdated()
      • colorBuffer

        public void colorBuffer​(boolean value)
      • colorBuffer

        public boolean colorBuffer()
      • copyTexture

        protected void copyTexture​(Texture tex,
                                   int x,
                                   int y,
                                   int w,
                                   int h,
                                   boolean scale)
      • copyTexture

        protected void copyTexture​(int texTarget,
                                   int texName,
                                   int texWidth,
                                   int texHeight,
                                   int x,
                                   int y,
                                   int w,
                                   int h,
                                   boolean scale)
      • copyObject

        protected void copyObject​(Texture src)
      • releasePixelBuffer

        protected void releasePixelBuffer()
      • releaseRGBAPixels

        protected void releaseRGBAPixels()
      • setParameters

        protected void setParameters​(Texture.Parameters params)
        Sets texture target and internal format according to the target and type specified.
        Parameters:
        target - int
        params - GLTextureParameters
      • fillEdges

        protected void fillEdges​(int x,
                                 int y,
                                 int w,
                                 int h)