Difference between revisions of "love.graphics.newMesh (Français)"

(Created page with "{{newin (Français)|0.9.0|090|type=function}} Crée un nouveau maillage. Utiliser Mesh:setTexture si le maillage doit...")
 
(Notes)
Line 44: Line 44:
 
{{param|Mesh|mesh|Le nouveau maillage.}}
 
{{param|Mesh|mesh|Le nouveau maillage.}}
 
=== Notes ===
 
=== Notes ===
[[Mesh:setVertices (Français)]] or [[Mesh:setVertex (Français)|Mesh:setVertex]] et [[Mesh:setDrawRange (Français)|Mesh:setDrawRange]] peuvent être utilisés pour spécifier les informations des vecteurs après que le maillage ai été créé.
+
[[Mesh:setVertices (Français)|Mesh:setVertices]] or [[Mesh:setVertex (Français)|Mesh:setVertex]] et [[Mesh:setDrawRange (Français)|Mesh:setDrawRange]] peuvent être utilisés pour spécifier les informations des vecteurs après que le maillage ai été créé.
  
 
== Fonction ==
 
== Fonction ==

Revision as of 10:16, 22 August 2021

Disponible depuis LÖVE 0.9.0
Ce-tte function n'est pas supporté-e par des versions plus anciennes.

Crée un nouveau maillage.

Utiliser Mesh:setTexture si le maillage doit être texturé à l'aide d'une Image ou Canvas lorsqu'elle est tracée.

Dans les versions antérieures à LÖVE 11.0, les valeurs de composantes couleurs et octets étaient dans l'étendue 0 à 255 au lieu de 0 à 1.


O.png 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 !  



Fonction

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Crée un maillage standard utilisant les vecteurs spécifiés.

Synopsis

mesh = love.graphics.newMesh( vertices, mode, usage )

Arguments

table (Français) vertices
Table remplie avec les tables d'information de vecteurpour chaque vecteur comme suit :
number (Français) [1]
Position du vecteur sur l'axe des x.
number (Français) [2]
Position du vecteur sur l'axe des y.
number (Français) [3] (0)
Coordonnée u de texture du vecteur. Les coordonnées de texture sont normalement dans une étendue [0, 1], mais peuvent être plus grandes ou moins grandes (voir WrapMode.)
number (Français) [4] (0)
Coordonnée v de texture du vecteur. Les coordonnées de texture sont normalement dans une étendue [0, 1], mais peuvent être plus grandes ou moins grandes (voir WrapMode.)
number (Français) [5] (1)
Composante rouge de la couleur du vecteur.
number (Français) [6] (1)
Composante vert de la couleur du vecteur.
number (Français) [7] (1)
Composante bleu de la couleur du vecteur.
number (Français) [8] (1)
Composante alpha de la couleur du vecteur.
MeshDrawMode (Français) mode ("fan")
Façon dont les vecteurs sont utilisés lors de leur tracé. Le mode par défaut, "fan" (éventail) est suffisant pour les polygones convexes simples.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du maillage. Le mode d'utilisations pécifiée affecte l'utilisation mémoire et les performances du maillage.

Retourne

Mesh (Français) mesh
Le nouveau maillage.

Fonction

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Crée un maillage standard en utilisant le nombre spécifié de vecteurs.

Synopsis

mesh = love.graphics.newMesh( vertexcount, mode, usage )

Arguments

number (Français) vertexcount
Nombre total de vecteur que le maillage utilisera. Chaque vecteur est initialisé à {0,0, 0,0, 1,1,1,1}.
MeshDrawMode (Français) mode ("fan")
Façon dont les vecteurs sont utilisés lors de leur tracé. Le mode par défaut, "fan" (éventail) est suffisant pour les polygones convexes simples.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du maillage. Le mode d'utilisations pécifiée affecte l'utilisation mémoire et les performances du maillage.

Retourne

Mesh mesh
Le nouveau maillage.

Notes

Mesh:setVertices or Mesh:setVertex et Mesh:setDrawRange peuvent être utilisés pour spécifier les informations des vecteurs après que le maillage ai été créé.

Fonction

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Crée un maillage en utilisant des attributs de vecteurs personnalisés et les données de vecteurs spécifiées.

Synopsis

mesh = love.graphics.newMesh( vertexformat, vertices, mode, usage )

Arguments

table (Français) vertexformat
Table de la forme {attribut, …}. Chaque attribut est une table qui spécifie un attribut de vecteur personnalisé utilisé pour chaque vecteur.
table (Français) attribute
Table contenant le nom de l'attribute, son type de donnée, et le nombre de composantes ddans l'attribut, sous la forme {nom, type de donnée, composantes}.
table (Français) ...
Tables de format d'attribut des vecteurs additionnelle.
table (Français) vertices
Table remplie par des tables d'information de vecteur pour chaque vecteur, sous la forme {vecteur, …} où chaque vecteur est une table sous la forme {composant d'attribut, …}.
number (Français) attributecomponent
Première composante du premier attribut de vecteur dans le vecteur.
number (Français) ...
Composantes supplémentairess de tous les attributs de vecteur dans le vecteur.
MeshDrawMode (Français) mode ("fan")
Façon dont les vecteurs sont utilisés lors de leur tracé. Le mode par défaut, "fan" (éventail) est suffisant pour les polygones convexes simples.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du maillage. Le mode d'utilisations pécifiée affecte l'utilisation mémoire et les performances du maillage.

Retourne

Mesh (Français) mesh
Le nouveau maillage.

Notes

Les valeurs de chaque table de vecteurs sont dans le même ordre que les attributs de vecteur dans le format de vecteurs spécifié. Si aucune valeur n'est fournie pour une composante d'attribut de vecteur spécifique, elle sera définie à la valeur 0 par défaut si son type de donnée est « float » (nombre flottant), ou 1 si son type de données est « byte » (octet).

Si le type de donnée d'un attribut est « float » (nombre à virgule flottante), les composants peuvent être dans l'étendue 1 à 4, si le type de donnée est « byte » (octet) il doit être 4.

Si un attribut de vecteur personnalisé utilise le nom "VertexPosition", "VertexTexCoord", ou "VertexColor", alors tha donnée du vecteur pour cet attribut de vecteur sera utilisé pour les positions de vecteur, coordonnées de tectures ou couleurs de vecteur standard respectivement, lorsque le maillage est tracé. Dans le cas contraire, un ombrage de vecteur est requit afin d'utiliser les attributs de vecteur lorsque le maillage est tracé.

Un maillage doit comporter un attribut "VertexPosition" pour pouvoir être tracé, mais il peut être attaché depuis un maillage différent via Mesh:attachAttribute.

Pour utiliser un attribut de vecteur nommé personnalisé dans un ombrage de vecteurs, il doit être déclaré comme une variable d'attribut (attribute) du même nom. Les variables peuvent être envoyées depuis le code des ombrages de vecteur vers le code des ombrages de pixel en créant des variables varying. Par exemple :

Code d'ombrage de vecteur

attribute vec2 CoolVertexAttribute;

varying vec2 CoolVariable;

vec4 position(mat4 transform_projection, vec4 vertex_position)
{
    CoolVariable = CoolVertexAttribute;
    return transform_projection * vertex_position;
}

Code d'ombrage de pixels

varying vec2 CoolVariable;

vec4 effect(vec4 color, Image tex, vec2 texcoord, vec2 pixcoord)
{
    vec4 texcolor = Texel(tex, texcoord + CoolVariable);
    return texcolor * color;
}

Fonction

Disponible depuis LÖVE 0.10.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Crér un maillage comportant des attributs de vecteurs personnalisés et le nombre de vecteurs spécifié.

Synopsis

mesh = love.graphics.newMesh( vertexformat, vertexcount, mode, usage )

Arguments

table (Français) vertexformat
Table sous la forme de {attribut, ...}. Chaque attribut est une table qui spécifie un attribut de vecteur personnalisé utilisé pour chaque vecteur.
table (Français) attribute
Table contenant le nom de l'attribut, son type de donnée, et le nombre de composantes dans l'attribut, sous la forme de {nom, type de donnée, composante}.
table (Français) ...
Tables de format d'attribut de vecteur additionnel.
number (Français) vertexcount
Nombre totale de vecteurs que le maillage utilisera.
MeshDrawMode (Français) mode ("fan")
Façon dont les vecteurs sont utilisés lors de leur tracé. Le mode par défaut, "fan" (éventail) est suffisant pour les polygones convexes simples.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du maillage. Le mode d'utilisations pécifiée affecte l'utilisation mémoire et les performances du maillage.

Retourne

Mesh (Français) mesh
Le nouveau maillage.

Notes

Les valeurs de chaque table de vecteurs sont dans le même ordre que les attributs de vecteur dans le format de vecteurs spécifié. Si aucune valeur n'est fournie pour une composante d'attribut de vecteur spécifique, elle sera définie à la valeur 0 par défaut si son type de donnée est « float » (nombre flottant), ou 1 si son type de données est « byte » (octet).

Si le type de donnée d'un attribut est « float » (nombre à virgule flottante), les composants peuvent être dans l'étendue 1 à 4, si le type de donnée est « byte » (octet) il doit être 4.

Si un attribut de vecteur personnalisé utilise le nom "VertexPosition", "VertexTexCoord", ou "VertexColor", alors tha donnée du vecteur pour cet attribut de vecteur sera utilisé pour les positions de vecteur, coordonnées de tectures ou couleurs de vecteur standard respectivement, lorsque le maillage est tracé. Dans le cas contraire, un ombrage de vecteur est requit afin d'utiliser les attributs de vecteur lorsque le maillage est tracé.

Un maillage doit comporter un attribut "VertexPosition" pour pouvoir être tracé, mais il peut être attaché depuis un maillage différent via Mesh:attachAttribute.

Fonction

Supprimé depuis LÖVE 0.10.0
ce-tte variant n'est plus supporté dans cette version et les versions ultérieures.

Synopsis

mesh = love.graphics.newMesh( vertices, texture, mode )

Arguments

table vertices
The table filled with vertex information tables for each vertex as follows:
number [1]
The position of the vertex on the x-axis.
number [2]
The position of the vertex on the y-axis.
number [3]
The u texture coordinate. Texture coordinates are normally in the range of [0, 1], but can be greater or less (see WrapMode.)
number [4]
The v texture coordinate. Texture coordinates are normally in the range of [0, 1], but can be greater or less (see WrapMode.)
number [5] (255)
The red color component.
number [6] (255)
The green color component.
number [7] (255)
The blue color component.
number [8] (255)
The alpha color component.
Texture texture (nil)
The Image or Canvas to use when drawing the Mesh. May be nil to use no texture.
MeshDrawMode mode ("fan")
How the vertices are used when drawing. The default mode "fan" is sufficient for simple convex polygons.

Retourne

Mesh (Français) mesh
The new mesh.

Fonction

Disponible depuis LÖVE 0.9.1 et supprimé avec LÖVE 0.10.0
ce-tte variant n'est pas supporté dans des versions antérieures ou postérieures.

Synopsis

mesh = love.graphics.newMesh( vertexcount, texture, mode )

Arguments

number vertexcount
The total number of vertices the Mesh will use. Each vertex is initialized to {0,0, 0,0, 255,255,255,255}.
Texture texture (nil)
The Image or Canvas to use when drawing the Mesh. May be nil to use no texture.
MeshDrawMode mode ("fan")
How the vertices are used when drawing. The default mode "fan" is sufficient for simple convex polygons.

Returns

Mesh (Français) mesh
The new mesh.

Notes

Mesh:setVertices or Mesh:setVertex and Mesh:setDrawRange can be used to specify vertex information once the Mesh is created.

Exemples

Crée et trace un maillage identique à une image tracé normalement mais avec différentes couleurs à chaque angle

function love.load()
	image = love.graphics.newImage("pig.png")
	
	local vertices = {
		{
			-- Coin haut-gauche (tinté en rouge)
			0, 0, -- position du vecteur
			0, 0, -- Coordonnées de texture à la position du vecteur
			1, 0, 0, -- couleurs du vecteur
		},
		{
			-- Coin haut-droit (tinté en vert)
			image:getWidth(), 0,
			1, 0, -- Coordonnés de texture dans l'étendue [0, 1]
			0, 1, 0
		},
		{
			-- Coin bas-droit (tinté en bleu)
			image:getWidth(), image:getHeight(),
			1, 1,
			0, 0, 1
		},
		{
			-- Coin bas-gauche (tinté en jaune)
			0, image:getHeight(),
			0, 1,
			1, 1, 0
		},
	}

	-- KLe DrawMode (mode de tracé) de maillage "fan" (éventail) fonctionne bien pour les maillages de 4 vecteurs.
	mesh = love.graphics.newMesh(vertices, "fan")
        mesh:setTexture(image)
end

function love.draw()
	love.graphics.draw(mesh, 0, 0)
end

Crée et trace un cercle texturé comportant une teinte rouge en son centre.

function CreateTexturedCircle(image, segments)
	segments = segments or 40
	local vertices = {}
	
	-- Le premier vecteur est au centre et est teinté en rouge. Nous centrons le cercle autour de l'origine (0, 0).
	table.insert(vertices, {0, 0, 0.5, 0.5, 255, 0, 0})
	
	-- Crée les vecteurs du bord du cercle.
	for i=0, segments do
		local angle = (i / segments) * math.pi * 2

		-- Cercle unité (d'un rayon de 1).
		local x = math.cos(angle)
		local y = math.sin(angle)
		
		-- Notre position est dans l'étendue [-1, 1] mais nous désirons que les coordonnées de texture soit dans l'étendue [0, 1].
		local u = (x + 1) * 0.5
		local v = (y + 1) * 0.5
		
		-- Les couleurs par vecteur sont à blanc par défaut.
		table.insert(vertices, {x, y, u, v})
	end
	
	-- Le mode de tracé "fan" (éventail) est pafait pour notre cercle.
	local mesh = love.graphics.newMesh(vertices, "fan")
        mesh:setTexture(image)

        return mesh
end

function love.load()
	image = love.graphics.newImage("pig.png")
	mesh = CreateTexturedCircle(image)
end

function love.draw()
	local radius = 100
	local mx, my = love.mouse.getPosition()
	
	-- Nous avons créé un cercle-unité, nous pouvons donc utiliser directement les paramètres d'échelle pour le rayon.
	love.graphics.draw(mesh, mx, my, 0, radius, radius)
end

Crée un cercle et le trace plus efficacement que love.graphics.circle.

function CreateCircle(segments)
	segments = segments or 40
	local vertices = {}
	
	-- Le premier vecteur à pour origine (0, 0) et sera le centre du cercle.
	table.insert(vertices, {0, 0})
	
	-- Crée les vecteurs au bord du cercle.
	for i=0, segments do
		local angle = (i / segments) * math.pi * 2

		-- Cercle-unité.
		local x = math.cos(angle)
		local y = math.sin(angle)

		table.insert(vertices, {x, y})
	end
	
	-- Le mode de tracé "fan" (éventail) est parfait pour notre cercle.
	return love.graphics.newMesh(vertices, "fan")
end

function love.load()
	mesh = CreateCircle()
end

function love.draw()
	local radius = 100
	local mx, my = love.mouse.getPosition()
	
	-- Nous avons crée un cercle-unité, nous pouvons donc utiliser directement les paramètres d'échelle pour le rayon.
	love.graphics.draw(mesh, mx, my, 0, radius, radius)
end

Voir également


Autres langues