{{newin|[[11.0]]|110|type=enum}}
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: [https://en.wikipedia.org/wiki/Cube_mapping 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 [[Texture:getDepth|depth]]. Requires a custom shader to use. Volume textures can have [[Texture:setFilter|texture filtering]] applied along the 3rd axis.

== Notes ==
[http://codeflow.org/entries/2010/dec/09/minecraft-like-rendering-experiments-in-opengl-4/illustrations/textures.jpg Array textures] can be rendered with [[love.graphics.drawLayer]], with [[love.graphics.draw]] and a [[Quad]] via [[Quad:setLayer]], or by [[Shader:send|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.
* <code>Image</code> (or <code>sampler2D</code>) is a 2D texture.
* <code>ArrayImage</code> (or <code>sampler2DArray</code>) is an array texture.
* <code>CubeImage</code> (or <code>samplerCube</code>) is a cubemap texture.
* <code>VolumeImage</code> (or <code>sampler3D</code>) is a volume texture.


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


Each texture type has a different [[GraphicsLimit|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 ==
* [[parent::love.graphics]]
* [[parent::Texture]]
* [[Texture:getTextureType]]
* [[love.graphics.newImage]]
* [[love.graphics.newArrayImage]]
* [[love.graphics.newCubeImage]]
* [[love.graphics.newVolumeImage]]
* [[love.graphics.newCanvas]]
* [[love.graphics.drawLayer]]
[[Category:Enums]]
{{#set:Description=Types of textures (2D, cubemap, etc.)}}
== Other Languages ==
{{i18n|TextureType}}