Class Texture

java.lang.Object
processing.opengl.Texture
All Implemented Interfaces:
PConstants

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

    • TEX2D

      protected static final int TEX2D
      Texture with normalized UV.
      See Also:
    • TEXRECT

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

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

      protected static final int LINEAR
      Linear sampling: magnification filtering is nearest, minification set to linear
      See Also:
    • 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:
    • 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:
    • MAX_UPDATES

      protected static final int MAX_UPDATES
      See Also:
    • MIN_MEMORY

      protected static final int MIN_MEMORY
      See Also:
    • 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
    • pg

      protected PGraphicsOpenGL pg
    • 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
    • edgeBuffer

      protected IntBuffer edgeBuffer
    • tempFbo

      protected FrameBuffer tempFbo
    • 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
    • bufferCache

      protected LinkedList<Texture.BufferData> bufferCache
    • usedBuffers

      protected LinkedList<Texture.BufferData> usedBuffers
    • disposeBufferMethod

      protected Method disposeBufferMethod
    • MAX_BUFFER_CACHE_SIZE

      public static final int MAX_BUFFER_CACHE_SIZE
      See Also:
  • Constructor Details

    • Texture

      public Texture(PGraphicsOpenGL pg)
    • 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 Details

    • 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()
    • getParameters

      public Texture.Parameters getParameters()
    • 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)