love.graphics.newArrayImage (Français)
Disponible depuis LÖVE 11.0 |
Ce-tte function n'est pas supporté-e par des versions plus anciennes. |
Créee une nouvelle Array (table) d'Image.
Les tables d'image ne sont pas supportés par tous les systèmes. Utilisez love.graphics.getTextureTypes pour vérifier ! |
Cette fonction peut être lente si elle est appelée de façon répétée, comme depuis love.update ou love.draw. Si vous devez utiliser souvent une ressource spécifique, créez la une seule fois, et conservez la quelque part, elle peut être réutilisée ! |
Une table d'image / table de texture est un objet unique qui contient plusieurs 'calques', 'couches' ou 'tranches' de sous-images 2D. Il peut être perçu comme similaire à un atlas de texture ou une feuille de sprite, mais il ne souffre pas des mêmes problèmes de débordement de pavage / quad que les atlas de texture – bien que chaque sous-image doit avoir les mêmes dimensions.
Un calque spécifique d'une table d'image peut être tracé à l'aide de love.graphics.drawLayer / SpriteBatch:addLayer, ou bien à l'aide de la variante Quad de love.graphics.draw et Quad:setLayer, ou bien via un ombrage (Shader) personnalisé.
Une table d'image, pour pouvoir être utilisé dans une Shader (ombrage), doit être déclaré de type ArrayImage
ou sampler2DArray
(plutôt que Image
ou sampler2D
). La fonction d'ombrage Texel(ArrayImage image, vec3 texturecoord)
doit être utilisée pour obtenir les couleurs des pixels d'une couche de la table d'image. L'argument vec3 contient les coordonnées de texture dans ses deux premières composantes, et l'index de couche basé sur 0 dans sa troisième composante.
Contents
Fonction
Crée une table d'Image en fournissant un fichier d'image différent pour chaque couche de l'objet table d'image (ArrayImage) résultant.
Synopsis
image = love.graphics.newArrayImage( slices, settings )
Arguments
table (Français) slices
- Table contenant les chemins de fichiers des images (ou les objets File, FileData, ImageData, ou bien CompressedImageData), dans une table. Chaque sous-image doit avoir les mêmes dimensions. Une table de tables peut également être fournie, où chaque sous-table contient tous les niveaux de mipmap pour l'index de couche de cette sous-table.
table (Français) settings (nil)
- Table optionnelle de réglages utilisée pour configurer la table d'image, contenant les champs suivants :
boolean (Français) mipmaps (false)
- True (vrai) pour que l'image utilise des mipmaps, false (faux) pour les désactiver. Les mipmaps seront générés automatiquement si l'image n'est pas dans un format de texture compresssée.
boolean (Français) linear (false)
- True (vrai) pour traiter les pixels de l'image dans un espace colorimétrique linéaire au lieu de sRGB, lorsque le rendu avec correction gamma est activé. La majorité des images sont créée dans l'espace sRGB.
number (Français) dpiscale (1)
- L'échelle en PPP à utiliser lors du tracé de la table d'image et de l'appel de getWidth/getHeight.
Retourne
Image (Français) image
- un objet ArrayImage.
Notes
Illustration de la façon dont une table d'image fonctionne : [1]
Un facteur d'échelle PPP de 2 (doublant la densité de pixels normale) résultera dans une image prenant le même espace à l'écran qu'une image ne comportant que la moitié de ses dimensions en pixels ayant un facteur d'échelle PPP de 1. Cela permet permet d'échanger facilement des ensembles d'images prenant le même espace à l'écran mais ayant des densités de pixels différents, permettant de réduire la logique de code nécessaire au support de l'affichage haute densité / écran Retina.
Afin d'utiliser un tableau de texture ou autre types de texture non-2D comme texture principale dans un Shader (ombrage) personnalisé, la variante effect() vide doit être utilisée dans l'ombrage de pixel, et MainTex (texture principale) doit être déclarée comme une ArrayImage ou un sampler2DArray de cette façon : uniform ArrayImage MainTex;
.
Exemples
Trace plusieurs calques d'une table d'image
function love.load()
local sprites = {"sprite1.png", "sprite2.png"}
image = love.graphics.newArrayImage(sprites)
end
function love.draw()
love.graphics.drawLayer(image, 1, 50, 50)
love.graphics.drawLayer(image, 2, 250, 50)
end
Utilise un ombrage personnalisé avec love.graphics.drawLayer
shader = love.graphics.newShader[[
uniform ArrayImage MainTex;
void effect() {
// Un Texel utilise un troisième composant des coordonnées de texture pour l'index de calque, Lorsque une table de texture lui est passé.
// LÖVE configure les coordonnées de texture afin qu'elles contienne l'index de calque spécifié dans love.graphics.drawLayer, lors du rendu d'une table de texture
love_PixelColor = Texel(MainTex, VaryingTexCoord.xyz) * VaryingColor;
}
]]
function love.load()
local sprites = {"sprite1.png", "sprite2.png"}
image = love.graphics.newArrayImage(sprites)
end
function love.draw()
love.graphics.setShader(shader)
love.graphics.drawLayer(image, 1, 50, 50)
love.graphics.drawLayer(image, 2, 250, 50)
end
Voir également
Autres langues
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info