Difference between revisions of "love.graphics"

m
m
 
(14 intermediate revisions by 7 users not shown)
Line 1: Line 1:
The primary responsibility for the love.graphics module is the drawing of lines, shapes, text, [[Image]]s and other [[Drawable]] objects onto the screen. Its secondary responsibilities include loading external files (including [[Image]]s and [[Font]]s) into memory, creating specialized objects (such as [[ParticleSystem]]s or [[Framebuffer]]s) and managing screen geometry.
+
The primary responsibility for the love.graphics module is the drawing of lines, shapes, text, [[Image]]s and other [[Drawable]] objects onto the screen. Its secondary responsibilities include loading external files (including [[Image]]s and [[Font]]s) into memory, creating specialized objects (such as [[ParticleSystem]]s or [[Canvas]]es) and managing screen geometry.
  
LÖVE's coordinate system is rooted in the upper-left corner of the screen, which is at location (0, 0). The x axis is horizontal: larger values are further to the right. The y axis is vertical: larger values are further towards the bottom.
+
LÖVE's coordinate system is rooted in the upper-left corner of the screen, which is at location (0, 0). The x axis is horizontal: larger values are further to the right. The y axis is vertical: larger values are further towards the bottom. It is worth noting that the location (0, 0) aligns with the upper-left corner of the pixel as well, meaning that for some functions you may encounter off-by-one problems in the render output when drawing 1 pixel wide lines. You can try aligning the coordinate system with the center of pixels rather than their upper-left corner. Do this by passing x+0.5 and y+0.5 or using love.graphics.translate().
  
In many cases, you draw images or shapes in terms of their upper-left corner.
+
[[File:lovecoordsystem.png|The LÖVE coordinate system]]
  
Many of the functions are used to manipulate the ''graphics coordinate system'', which is essentially the the way coordinates are mapped to the display. You can change the position, scale, and even rotation in this way.
+
In many cases, you draw images or shapes in terms of their upper-left corner (See the picture above).
 +
 
 +
 
 +
A note about angles in LÖVE: Angles are expressed in terms of [https://en.wikipedia.org/wiki/Radian radians], with values in the range of 0 to 2pi  (approximately 6.28); you may be more used to working in terms of degrees.
 +
Because of how the coordinate system is set up, with an origin in the upper left corner, angles in LÖVE may seem a bit backwards:  0 points right (along the X axis), ¼pi points diagonally down and to the right, ½pi points directly down (along the Y axis), with increasing values continuing '''clockwise'''.
 +
 
 +
 
 +
Many of the functions are used to manipulate the ''graphics coordinate system'', which is essentially the way coordinates are mapped to the display. You can change the position, scale, and even change rotation in this way.
  
  
Line 11: Line 18:
 
{{#ask: [[Category:Types]] [[parent::love.graphics]] [[Concept:Current]]
 
{{#ask: [[Category:Types]] [[parent::love.graphics]] [[Concept:Current]]
 
| headers=hide
 
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 
| ?Description
 
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 
}}
 
}}
 +
 
== Functions ==
 
== Functions ==
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]]
+
=== Drawing ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::Drawing]]
 
| headers=hide
 
| headers=hide
 
| limit=2000
 
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 
| ?Description
 
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 
}}
 
}}
 +
 +
 +
=== Object Creation ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::Object Creation]]
 +
| headers=hide
 +
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
}}
 +
 +
 +
=== Graphics State ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::State]]
 +
| headers=hide
 +
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
}}
 +
 +
 +
=== Coordinate System ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::Coordinate System]]
 +
| headers=hide
 +
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
}}
 +
 +
 +
=== Window  ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::Window]]
 +
| headers=hide
 +
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
}}
 +
 +
 +
=== System Information  ===
 +
{{#ask: [[Category:Functions]] [[parent::love.graphics]] [[Concept:Current]] [[Sub-Category::SystemInfo]]
 +
| headers=hide
 +
| limit=2000
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
}}
 +
 
== Enums ==
 
== Enums ==
 
{{#ask: [[Category:Enums]] [[parent::love.graphics]] [[Concept:Current]]
 
{{#ask: [[Category:Enums]] [[parent::love.graphics]] [[Concept:Current]]
 
| headers=hide
 
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 
| ?Description
 
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 
}}
 
}}
 +
 
[[Category:Modules]]
 
[[Category:Modules]]
{{#set:Description=The graphics module.}}
+
{{#set:Description=Drawing of shapes and images, management of screen geometry.}}
 
== See Also ==
 
== See Also ==
 
* [[parent::love]]
 
* [[parent::love]]

Latest revision as of 12:30, 8 April 2021

The primary responsibility for the love.graphics module is the drawing of lines, shapes, text, Images and other Drawable objects onto the screen. Its secondary responsibilities include loading external files (including Images and Fonts) into memory, creating specialized objects (such as ParticleSystems or Canvases) and managing screen geometry.

LÖVE's coordinate system is rooted in the upper-left corner of the screen, which is at location (0, 0). The x axis is horizontal: larger values are further to the right. The y axis is vertical: larger values are further towards the bottom. It is worth noting that the location (0, 0) aligns with the upper-left corner of the pixel as well, meaning that for some functions you may encounter off-by-one problems in the render output when drawing 1 pixel wide lines. You can try aligning the coordinate system with the center of pixels rather than their upper-left corner. Do this by passing x+0.5 and y+0.5 or using love.graphics.translate().

The LÖVE coordinate system

In many cases, you draw images or shapes in terms of their upper-left corner (See the picture above).


A note about angles in LÖVE: Angles are expressed in terms of radians, with values in the range of 0 to 2pi (approximately 6.28); you may be more used to working in terms of degrees. Because of how the coordinate system is set up, with an origin in the upper left corner, angles in LÖVE may seem a bit backwards: 0 points right (along the X axis), ¼pi points diagonally down and to the right, ½pi points directly down (along the Y axis), with increasing values continuing clockwise.


Many of the functions are used to manipulate the graphics coordinate system, which is essentially the way coordinates are mapped to the display. You can change the position, scale, and even change rotation in this way.


Types

Canvas Off-screen render target. Added since 0.8.0
Drawable Superclass for all things that can be drawn on screen.
Font Defines the shape of characters than can be drawn onto the screen.
Framebuffer Off-screen render target. Added since 0.7.0 Removed in 0.8.0
Image Drawable image type.
Mesh A 2D polygon mesh used for drawing arbitrary textured shapes. Added since 0.9.0
ParticleSystem Used to create cool effects, like fire.
PixelEffect Pixel shader effect. Added since 0.8.0 Removed in 0.9.0
Quad A quadrilateral with texture coordinate information.
Shader Shader effect. Added since 0.9.0
SpriteBatch Store image positions in a buffer, and draw it in one call.
Text Drawable text. Added since 0.10.0
Texture Superclass for drawable objects which represent a texture. Added since 0.9.1
Video A drawable video. Added since 0.10.0

Functions

Drawing

love.graphics.arc Draws an arc. Added since 0.8.0
love.graphics.circle Draws a circle.
love.graphics.clear Clears the screen or active Canvas to the specified color.
love.graphics.discard Discards the contents of the screen or active Canvas. Added since 0.10.0
love.graphics.draw Draws objects on screen.
love.graphics.drawInstanced Draws many instances of a Mesh with a single draw call, using hardware geometry instancing. Added since 11.0
love.graphics.drawLayer Draws a layer of an Array Texture. Added since 11.0
love.graphics.drawq Draw a Quad with the specified Image on screen. Removed in 0.9.0
love.graphics.ellipse Draws an ellipse. Added since 0.10.0
love.graphics.flushBatch Immediately renders any pending automatically batched draws. Added since 11.0
love.graphics.line Draws lines between points.
love.graphics.point Draws a point. Added since 0.3.0 Removed in 0.10.0
love.graphics.points Draws one or more points. Added since 0.10.0
love.graphics.polygon Draw a polygon. Added since 0.4.0
love.graphics.present Displays the results of drawing operations on the screen.
love.graphics.print Draws text on screen. If no Font is set, one will be created and set (once) if needed.
love.graphics.printf Draws formatted text, with word wrap and alignment.
love.graphics.quad Draws a quadrilateral shape. Removed in 0.9.0
love.graphics.rectangle Draws a rectangle. Added since 0.3.2
love.graphics.stencil Draws geometry as a stencil. Added since 0.10.0
love.graphics.triangle Draws a triangle. Removed in 0.9.0


Object Creation

love.graphics.captureScreenshot Creates a screenshot once the current frame is done. Added since 11.0
love.graphics.newArrayImage Creates a new array Image. Added since 11.0
love.graphics.newCanvas Creates a new Canvas. Added since 0.8.0
love.graphics.newCubeImage Creates a new cubemap Image. Added since 11.0
love.graphics.newFont Creates a new Font from a TrueType Font or BMFont file.
love.graphics.newFramebuffer Creates a new Framebuffer. Added since 0.7.0 Removed in 0.8.0
love.graphics.newImage Creates a new Image.
love.graphics.newImageFont Creates a new Font by loading a specifically formatted image. Added since 0.2.0
love.graphics.newMesh Creates a new Mesh. Added since 0.9.0
love.graphics.newParticleSystem Creates a new ParticleSystem.
love.graphics.newPixelEffect Creates a new PixelEffect. Added since 0.8.0 Removed in 0.9.0
love.graphics.newQuad Creates a new Quad.
love.graphics.newScreenshot Creates a screenshot and returns the ImageData. Removed in 11.0
love.graphics.newShader Creates a new Shader. Added since 0.9.0
love.graphics.newSpriteBatch Creates a new SpriteBatch.
love.graphics.newStencil Creates a new stencil. Added since 0.8.0 Removed in 0.9.0
love.graphics.newText Creates a new drawable Text object. Added since 0.10.0
love.graphics.newVideo Creates a new Video. Added since 0.10.0
love.graphics.newVolumeImage Creates a new volume Image. Added since 11.0
love.graphics.setNewFont Creates and sets a new Font. Added since 0.8.0
love.graphics.validateShader Validates shader code. Added since 11.0


Graphics State

love.graphics.getBackgroundColor Gets the current background color.
love.graphics.getBlendMode Gets the blending mode. Added since 0.2.0
love.graphics.getCanvas Returns the current target Canvas. Added since 0.8.0
love.graphics.getColor Gets the current color.
love.graphics.getColorMask Gets the active color components used when drawing. Added since 0.9.0
love.graphics.getColorMode Gets the color mode (which controls how images are affected by the current color). Added since 0.2.0 Removed in 0.9.0
love.graphics.getDefaultFilter Returns the default scaling filters used with Images, Canvases, and Fonts. Added since 0.9.0
love.graphics.getDefaultImageFilter Returns the default scaling filters. Added since 0.8.0 Removed in 0.9.0
love.graphics.getDepthMode Gets the current depth test mode and whether writing to the depth buffer is enabled. Added since 11.0
love.graphics.getFont Gets the current Font object. Added since 0.9.0
love.graphics.getFrontFaceWinding Gets whether triangles with clockwise- or counterclockwise-ordered vertices are considered front-facing. Added since 11.0
love.graphics.getLineJoin Gets the line join style.
love.graphics.getLineStipple Gets the current line stipple. Removed in 0.8.0
love.graphics.getLineStyle Gets the line style. Added since 0.3.2
love.graphics.getLineWidth Gets the current line width. Added since 0.3.2
love.graphics.getMeshCullMode Gets whether back-facing triangles in a Mesh are culled. Added since 11.0
love.graphics.getPixelEffect Returns the current PixelEffect. Added since 0.8.0 Removed in 0.9.0
love.graphics.getPointSize Gets the point size.
love.graphics.getPointStyle Gets the current point style. Removed in 0.10.0
love.graphics.getScissor Gets the current scissor box. Added since 0.4.0
love.graphics.getShader Gets the current Shader. Added since 0.9.0
love.graphics.getStackDepth Gets the current depth of the transform / state stack (the number of pushes without corresponding pops). Added since 11.0
love.graphics.getStencilTest Gets the current stencil test configuration. Added since 0.10.0
love.graphics.intersectScissor Sets the scissor to the rectangle created by the intersection of the specified rectangle with the existing scissor. Added since 0.10.0
love.graphics.isActive Gets whether the graphics module is able to be used. Added since 0.10.0
love.graphics.isGammaCorrect Gets whether gamma-correct rendering is enabled. Added since 0.10.0
love.graphics.isSupported Checks for the support of graphics related functions. Added since 0.8.0 Removed in 0.10.0
love.graphics.isWireframe Gets whether wireframe mode is used when drawing. Added since 0.9.1
love.graphics.reset Resets the current graphics settings.
love.graphics.setBackgroundColor Sets the background color.
love.graphics.setBlendMode Sets the blending mode. Added since 0.2.0
love.graphics.setCanvas Captures drawing operations to a Canvas Added since 0.8.0
love.graphics.setColor Sets the color used for drawing.
love.graphics.setColorMask Sets the color mask. Enables or disables specific color components when rendering. Added since 0.9.0
love.graphics.setColorMode Sets the color mode (which controls how images are affected by the current color). Added since 0.2.0 Removed in 0.9.0
love.graphics.setDefaultFilter Sets the default scaling filters used with Images, Canvases, and Fonts. Added since 0.9.0
love.graphics.setDefaultImageFilter Sets the default scaling filters. Added since 0.8.0 Removed in 0.9.0
love.graphics.setDepthMode Configures depth testing and writing to the depth buffer. Added since 11.0
love.graphics.setFont Set an already-loaded Font as the current font.
love.graphics.setFrontFaceWinding Sets whether triangles with clockwise- or counterclockwise-ordered vertices are considered front-facing. Added since 11.0
love.graphics.setInvertedStencil Defines an inverted stencil. Added since 0.8.0 Removed in 0.10.0
love.graphics.setLine Sets the line width and style. Removed in 0.9.0
love.graphics.setLineJoin Sets the line join style.
love.graphics.setLineStipple Sets the line stipple pattern. Removed in 0.8.0
love.graphics.setLineStyle Sets the line style. Added since 0.3.2
love.graphics.setLineWidth Sets the line width. Added since 0.3.2
love.graphics.setMeshCullMode Sets whether back-facing triangles in a Mesh are culled. Added since 11.0
love.graphics.setPixelEffect Routes drawing operations through a pixel shader. Added since 0.8.0 Removed in 0.9.0
love.graphics.setPoint Sets the point size and style. Removed in 0.9.0
love.graphics.setPointSize Sets the point size.
love.graphics.setPointStyle Sets the point style. Removed in 0.10.0
love.graphics.setRenderTarget Captures drawing operations to a Framebuffer Added since 0.7.0 Removed in 0.8.0
love.graphics.setScissor Sets or disables scissor. Added since 0.4.0
love.graphics.setShader Routes drawing operations through a shader. Added since 0.9.0
love.graphics.setStencil Defines or releases a stencil. Added since 0.8.0 Removed in 0.10.0
love.graphics.setStencilTest Configures or disables stencil testing. Added since 0.10.0
love.graphics.setWireframe Sets whether wireframe lines will be used when drawing. Added since 0.9.1


Coordinate System

love.graphics.applyTransform Applies the given Transform object to the current coordinate transformation. Added since 11.0
love.graphics.inverseTransformPoint Converts the given 2D position from screen-space into global coordinates. Added since 11.0
love.graphics.origin Resets the current coordinate transformation. Added since 0.9.0
love.graphics.pop Pops the current coordinate transformation from the transformation stack.
love.graphics.push Copies and pushes the current coordinate transformation to the transformation stack.
love.graphics.replaceTransform Replaces the current coordinate transformation with the given Transform object. Added since 11.0
love.graphics.rotate Rotates the coordinate system in two dimensions.
love.graphics.scale Scales the coordinate system in two dimensions.
love.graphics.shear Shears the coordinate system. Added since 0.8.0
love.graphics.transformPoint Converts the given 2D position from global coordinates into screen-space. Added since 11.0
love.graphics.translate Translates the coordinate system in two dimensions.


Window

love.graphics.checkMode Checks if a display mode is supported. Removed in 0.9.0
love.graphics.getCaption Gets the window caption. Removed in 0.9.0
love.graphics.getDPIScale Gets the DPI scale factor of the window. Added since 11.0
love.graphics.getDimensions Gets the width and height of the window. Added since 0.9.0
love.graphics.getHeight Gets the height in pixels of the window. Added since 0.2.1
love.graphics.getMode Returns the current display mode. Added since 0.8.0 Removed in 0.9.0
love.graphics.getModes Gets a list of supported fullscreen modes. Removed in 0.9.0
love.graphics.getPixelDimensions Gets the width and height in pixels of the window. Added since 11.0
love.graphics.getPixelHeight Gets the height in pixels of the window. Added since 11.0
love.graphics.getPixelWidth Gets the width in pixels of the window. Added since 11.0
love.graphics.getWidth Gets the width in pixels of the window. Added since 0.2.1
love.graphics.hasFocus Checks if the game window has keyboard focus. Added since 0.8.0 Removed in 0.9.0
love.graphics.isCreated Checks if the window has been created. Removed in 0.9.0
love.graphics.setCaption Sets the window caption. Removed in 0.9.0
love.graphics.setIcon Set window icon. Added since 0.7.0 Removed in 0.9.0
love.graphics.setMode Changes the display mode. Removed in 0.9.0
love.graphics.toggleFullscreen Toggles fullscreen. Removed in 0.9.0


System Information

love.graphics.getCanvasFormats Gets the available Canvas formats, and whether each is supported. Added since 0.9.2
love.graphics.getCompressedImageFormats Gets the available compressed image formats, and whether each is supported. Added since 0.9.2 Removed in 11.0
love.graphics.getImageFormats Gets the pixel formats usable for Images, and whether each is supported. Added since 11.0
love.graphics.getMaxImageSize Gets the max supported width or height of Images and Canvases. Added since 0.9.0 Removed in 0.10.0
love.graphics.getMaxPointSize Gets the max supported point size. Removed in 0.10.0
love.graphics.getRendererInfo Gets information about the system's video card and drivers. Added since 0.9.0
love.graphics.getStats Gets performance-related rendering statistics. Added since 0.9.2
love.graphics.getSupported Gets the optional graphics features and whether they're supported. Added since 0.10.0
love.graphics.getSystemLimit Gets the system-dependent maximum value for a love.graphics feature. Added since 0.9.1 Removed in 0.10.0
love.graphics.getSystemLimits Gets the system-dependent maximum values for love.graphics features. Added since 0.10.0
love.graphics.getTextureTypes Gets the available texture types, and whether each is supported. Added since 11.0

Enums

AlignMode Text alignment.
ArcType Different types of arcs that can be drawn. Added since 0.10.1
AttributeDataType Data types used in a Mesh's vertex format. Added since 0.9.0
BlendAlphaMode Different ways alpha affects color blending. Added since 0.10.0
BlendMode Different ways to do color blending. Added since 0.2.0
BufferDataUsage Usage hints for SpriteBatches, Meshes, and GraphicsBuffers to optimize data storage and access. Added since 0.8.0
CanvasFormat Canvas texture formats. Added since 0.9.0
ColorMode Controls how drawn images are affected by current color. Added since 0.2.0 Removed in 0.9.0
CompareMode Different types of stencil test and depth test comparisons. Added since 0.10.0
CullMode How Mesh geometry is culled when rendering. Added since 11.0
DrawMode Controls whether shapes are drawn as an outline, or filled.
FilterMode How the image is filtered when scaling.
GraphicsFeature Graphics features that can be checked for with love.graphics.getSupported. Added since 0.8.0
GraphicsLimit Types of system-dependent graphics limits. Added since 0.9.1
IndexDataType Vertex map datatype. Added since 11.0
LineJoin Line join style.
LineStyle The styles in which lines are drawn.
MeshDrawMode How a Mesh's vertices are used when drawing. Added since 0.9.0
MipmapMode Controls whether a Canvas has mipmaps, and its behaviour when it does. Added since 11.0
PixelFormat Pixel formats for Textures, ImageData, and CompressedImageData. Added since 11.0
PointStyle How points should be drawn. Removed in 0.10.0
StackType Graphics state stack types used with love.graphics.push. Added since 0.9.2
StencilAction How a stencil function modifies the stencil values of pixels it touches. Added since 0.10.0
TextureFormat Controls the canvas texture format. Added since 0.9.0 Removed in 0.10.0
TextureType Types of textures (2D, cubemap, etc.) Added since 11.0
VertexAttributeStep The frequency at which a vertex shader fetches the vertex attribute's data from the Mesh when it's drawn. Added since 11.0
VertexWinding Vertex winding. Added since 11.0
WrapMode How the image wraps inside a large Quad.

See Also

Other Languages