TextureType

Available since LÖVE 11.0
This enum is not supported in earlier versions.

Types of textures (2D, cubemap, etc.)

Constants

2d
Regular 2D texture with width and height.
array
Several same-size 2D textures organized into a single object. Similar to a texture atlas / sprite sheet, but avoids sprite bleeding and other issues.
cube
Cubemap texture with 6 faces. Requires a custom shader (and Shader:send) to use. Sampling from a cube texture in a shader takes a 3D direction vector instead of a texture coordinate.
volume
3D texture with width, height, and depth. Requires a custom shader to use. Volume textures can have texture filtering applied along the 3rd axis.

Notes

Array textures can be rendered with love.graphics.drawLayer, with love.graphics.draw and a Quad via Quad:setLayer, or by sending it to a custom Shader. When getting the pixels of a layer of an Array Texture in a shader, a third texture coordinate component is used to choose which layer to get.


When using a custom Shader, each texture type has a different GLSL type.

  • Image (or sampler2D) is a 2D texture.
  • ArrayImage (or sampler2DArray) is an array texture.
  • CubeImage (or samplerCube) is a cubemap texture.
  • VolumeImage (or sampler3D) is a volume texture.


The Texel shader function can be used to sample from all types of textures in a shader. Texel is recommended instead of texture2D, textureCube etc., because the latter do not work across all versions of GLSL supported by LÖVE, whereas Texel does (GLSL 3 removed texture2D and added a generic texture function).


Each texture type has a different maximum size on a user's system. Use love.graphics.getSystemLimits to check.

Not all texture types are supported by all systems. love.graphics.getTextureTypes can check for support.

2D and cube texture types are supported everywhere. Array textures require a system that supports OpenGL 3 or OpenGL ES 3. Volume / 3D textures require a system that supports OpenGL 2 or OpenGL ES 3.

See Also

Other Languages