Difference between revisions of "Mesh"

From GiderosMobile
 
(7 intermediate revisions by 2 users not shown)
Line 6: Line 6:
  
 
=== Description ===
 
=== Description ===
The Mesh class is used to create and display custom constructed set of triangles (triangle meshes). It basically consists of 4 arrays:
+
The '''Mesh''' class is used to create and display custom constructed set of triangles (triangle meshes). It basically consists of 4 arrays:
 
*vertex
 
*vertex
 
*index
 
*index
Line 19: Line 19:
 
=== Example ===
 
=== Example ===
 
'''Drawing a colored Mesh rectangle'''
 
'''Drawing a colored Mesh rectangle'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 +
application:configureFrustum(45, -2*128)
 +
--application:configureFrustum(0, 2*128)
 +
 
 
local mesh = Mesh.new()
 
local mesh = Mesh.new()
 
stage:addChild(mesh)
 
stage:addChild(mesh)
Line 37: Line 40:
 
-- 4. vertex 0xffff00 color with 0 alpha
 
-- 4. vertex 0xffff00 color with 0 alpha
 
mesh:setColorArray(0xff0000, 0.5, 0x00ff00, 0.7, 0x0000ff, 1.0, 0xffff00, 0)
 
mesh:setColorArray(0xff0000, 0.5, 0x00ff00, 0.7, 0x0000ff, 1.0, 0xffff00, 0)
</source>
+
</syntaxhighlight>
  
 
{|-
 
{|-
 
| style="width: 50%; vertical-align:top;"|
 
| style="width: 50%; vertical-align:top;"|
 +
 
=== Methods ===
 
=== Methods ===
 
[[Mesh.new]] ''creates a new Mesh instance''<br/><!--GIDEROSMTD:Mesh.new(is3d) creates a new Mesh instance-->
 
[[Mesh.new]] ''creates a new Mesh instance''<br/><!--GIDEROSMTD:Mesh.new(is3d) creates a new Mesh instance-->
Line 58: Line 62:
 
[[Mesh:resizeColorArray]] ''resizes the Color array''<br/><!--GIDEROSMTD:Mesh:resizeColorArray(size) resizes the Color array-->
 
[[Mesh:resizeColorArray]] ''resizes the Color array''<br/><!--GIDEROSMTD:Mesh:resizeColorArray(size) resizes the Color array-->
 
[[Mesh:resizeIndexArray]] ''resizes the Index array''<br/><!--GIDEROSMTD:Mesh:resizeIndexArray(size) resizes the Index array-->
 
[[Mesh:resizeIndexArray]] ''resizes the Index array''<br/><!--GIDEROSMTD:Mesh:resizeIndexArray(size) resizes the Index array-->
[[Mesh:resizeTextureCoordinateArray]] ''resizes the texture coordinates array'' <br/><!--GIDEROSMTD:Mesh:resizeTextureCoordinateArray(size) resizes the texture coordinates array-->
+
[[Mesh:resizeTextureCoordinateArray]] ''resizes the texture coordinates array''<br/><!--GIDEROSMTD:Mesh:resizeTextureCoordinateArray(size) resizes the texture coordinates array-->
[[Mesh:resizeVertexArray]] ''resizes the vertex array'' <br/><!--GIDEROSMTD:Mesh:resizeVertexArray(size) resizes the vertex array -->
+
[[Mesh:resizeVertexArray]] ''resizes the vertex array''<br/><!--GIDEROSMTD:Mesh:resizeVertexArray(size) resizes the vertex array-->
[[Mesh:setColor]] ''set a color in the color array'' <br/><!--GIDEROSMTD:Mesh:setColor(i,color,alpha) set a color in the color array-->
+
[[Mesh:setAutoSort]] ''enables depth sorting for translucency''<br/><!--GIDEROSMTD:Mesh:setAutoSort(bool) enables depth sorting for translucency-->
[[Mesh:setColorArray]] ''sets or replace the whole color array'' <br/><!--GIDEROSMTD:Mesh:setColorArray(colors) sets or replace the whole color array-->
+
[[Mesh:setColor]] ''sets a color in the color array''<br/><!--GIDEROSMTD:Mesh:setColor(i,color,alpha) sets a color in the color array-->
[[Mesh:setColors]] ''sets several colors at once'' <br/><!--GIDEROSMTD:Mesh:setColors(colors) sets several colors at once-->
+
[[Mesh:setColorArray]] ''sets or replace the whole color array''<br/><!--GIDEROSMTD:Mesh:setColorArray(colors) sets or replace the whole color array-->
[[Mesh:setGenericArray]] ''sets or replace a generic array'' <br/><!--GIDEROSMTD:Mesh:setGenericArray(index,type,mult,count,data) sets or replace a generic array-->
+
[[Mesh:setColors]] ''sets several colors at once''<br/><!--GIDEROSMTD:Mesh:setColors(colors) sets several colors at once-->
[[Mesh:setIndex]] ''set an index in the index array'' <br/><!--GIDEROSMTD:Mesh:setIndex(i,index) set an index in the index array -->
+
[[Mesh:setCullMode]] ''sets the face culling mode''<br/><!--GIDEROSMTD:Mesh:setCullMode(mode) sets the face culling mode-->
[[Mesh:setIndexArray]] ''sets or replace the whole index array'' <br/><!--GIDEROSMTD:Mesh:setIndexArray(indices) sets or replace the whole index array-->
+
[[Mesh:setGenericArray]] ''sets or replace a generic array''<br/><!--GIDEROSMTD:Mesh:setGenericArray(index,type,mult,count,data) sets or replace a generic array-->
[[Mesh:setIndices]] ''sets several indices at once'' <br/><!--GIDEROSMTD:Mesh:setIndices(indices) sets several indices at once-->
+
[[Mesh:setIndex]] ''sets an index in the index array''<br/><!--GIDEROSMTD:Mesh:setIndex(i,index) sets an index in the index array-->
[[Mesh:setTexture]] ''attach a texture to the Mesh'' <br/><!--GIDEROSMTD:Mesh:setTexture(texture,slot) attach a texture to the Mesh-->
+
[[Mesh:setIndexArray]] ''sets or replace the whole index array''<br/><!--GIDEROSMTD:Mesh:setIndexArray(indices) sets or replace the whole index array-->
[[Mesh:setTextureCoordinate]] ''set a texture coordinate in the texture coordinates array'' <br/><!--GIDEROSMTD:Mesh:setTextureCoordinate(i,u,v) set a texture coordinate in the texture coordinates array-->
+
[[Mesh:setIndices]] ''sets several indices at once''<br/><!--GIDEROSMTD:Mesh:setIndices(indices) sets several indices at once-->
[[Mesh:setTextureCoordinateArray]] ''sets or replace the whole texture coordinates array'' <br/><!--GIDEROSMTD:Mesh:setTextureCoordinateArray(textureCoordinates) sets or replace the whole texture coordinates array-->
+
[[Mesh:setInstanceCount]] ''enables instanced rendering and sets the number of instances to draw''<br/><!--GIDEROSMTD:Mesh:setInstanceCount(count) enables instanced rendering and sets the number of instances to draw-->
[[Mesh:setTextureCoordinates]] ''sets several texture coordinates at once'' <br/><!--GIDEROSMTD:Mesh:setTextureCoordinates(textureCoordinates) sets several texture coordinates at once-->
+
[[Mesh:setPrimitiveType]] ''sets the type of primitives to render''<br/><!--GIDEROSMTD:Mesh:setPrimitiveType(primitiveType) sets the type of primitives to render-->
[[Mesh:setVertex]] ''set a vertex in the vertex array''<br/><!--GIDEROSMTD:Mesh:setVertex(i,x,y) set a vertex in the vertex array-->
+
[[Mesh:setTexture]] ''attaches a texture to the Mesh'' <br/><!--GIDEROSMTD:Mesh:setTexture(texture,slot) attaches a texture to the Mesh-->
[[Mesh:setVertexArray]] ''sets or replace the whole vertex array'' <br/><!--GIDEROSMTD:Mesh:setVertexArray(vertices) sets or replace the whole vertex array-->
+
[[Mesh:setTextureCoordinate]] ''sets a texture coordinate in the texture coordinates array''<br/><!--GIDEROSMTD:Mesh:setTextureCoordinate(i,u,v) sets a texture coordinate in the texture coordinates array-->
[[Mesh:setVertices]] ''sets several vertices at once'' <br/><!--GIDEROSMTD:Mesh:setVertices(vertices) sets several vertices at once-->
+
[[Mesh:setTextureCoordinateArray]] ''sets or replace the whole texture coordinates array''<br/><!--GIDEROSMTD:Mesh:setTextureCoordinateArray(textureCoordinates) sets or replace the whole texture coordinates array-->
 +
[[Mesh:setTextureCoordinates]] ''sets several texture coordinates at once''<br/><!--GIDEROSMTD:Mesh:setTextureCoordinates(textureCoordinates) sets several texture coordinates at once-->
 +
[[Mesh:setVertex]] ''sets a vertex in the vertex array''<br/><!--GIDEROSMTD:Mesh:setVertex(i,x,y) sets a vertex in the vertex array-->
 +
[[Mesh:setVertexArray]] ''sets or replace the whole vertex array''<br/><!--GIDEROSMTD:Mesh:setVertexArray(vertices) sets or replace the whole vertex array-->
 +
[[Mesh:setVertices]] ''sets several vertices at once''<br/><!--GIDEROSMTD:Mesh:setVertices(vertices) sets several vertices at once-->
  
 
| style="width: 50%; vertical-align:top;"|
 
| style="width: 50%; vertical-align:top;"|

Latest revision as of 00:37, 21 February 2024

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2012.09
Inherits from: Sprite

Description

The Mesh class is used to create and display custom constructed set of triangles (triangle meshes). It basically consists of 4 arrays:

  • vertex
  • index
  • color (optional)
  • textureCoordinate (optional)

and a texture (optional). The Mesh class provides more than one way to set/modify these arrays.

The Mesh can be 2D or 3D, the latter expects an additional Z coordinate in its vertices. Additionally, 3D meshes and their children are rendered with depth testing enabled, which prevents far objects to be drawn above nearest ones, irrespective of actual drawing order.

the Mesh class doesn't do bounds check: if an element at index array points to an non-existent vertex, the application may crash

Example

Drawing a colored Mesh rectangle

application:configureFrustum(45, -2*128)
--application:configureFrustum(0, 2*128)

local mesh = Mesh.new()
stage:addChild(mesh)
-- 1. vertex (0, 0)
-- 2. vertex (100, 0)
-- 3. vertex (100, 150)
-- 4. vertex (0, 150)
mesh:setVertexArray(0, 0,   100, 0,   100, 150,   0, 150)

-- 1. triangle from 1, 2 and 3 vertex
-- 2. triangle from 1, 3 and 4 vertex
mesh:setIndexArray(1, 2, 3,     1, 3, 4)

-- 1. vertex 0xff0000 color with 0.5 alpha
-- 2. vertex 0x00ff00 color with 0.7 alpha
-- 3. vertex 0x0000ff color with 1 alpha
-- 4. vertex 0xffff00 color with 0 alpha
mesh:setColorArray(0xff0000, 0.5, 0x00ff00, 0.7, 0x0000ff, 1.0, 0xffff00, 0)

Methods

Mesh.new creates a new Mesh instance
Mesh:clearColorArray clears the color array
Mesh:clearIndexArray clears the index array
Mesh:clearTexture clears the Mesh texture
Mesh:clearTextureCoordinateArray clears the texture coordinate array
Mesh:clearVertexArray clears the vertex array
Mesh:getColor returns color and alpha of the i-th element from color array
Mesh:getColorArraySize gets the size of the Color array
Mesh:getIndex returns the i-th element from index array
Mesh:getIndexArraySize gets the size of the Index array
Mesh:getTextureCoordinate returns u and v coordinate of the i-th element from texture coordinate array
Mesh:getTextureCoordinateArraySize gets the size of the Texture Coordinate array
Mesh:getVertex returns x and y coordinate of the i-th element from vertex array
Mesh:getVertexArraySize gets the size of the Vertices array
Mesh:resizeColorArray resizes the Color array
Mesh:resizeIndexArray resizes the Index array
Mesh:resizeTextureCoordinateArray resizes the texture coordinates array
Mesh:resizeVertexArray resizes the vertex array
Mesh:setAutoSort enables depth sorting for translucency
Mesh:setColor sets a color in the color array
Mesh:setColorArray sets or replace the whole color array
Mesh:setColors sets several colors at once
Mesh:setCullMode sets the face culling mode
Mesh:setGenericArray sets or replace a generic array
Mesh:setIndex sets an index in the index array
Mesh:setIndexArray sets or replace the whole index array
Mesh:setIndices sets several indices at once
Mesh:setInstanceCount enables instanced rendering and sets the number of instances to draw
Mesh:setPrimitiveType sets the type of primitives to render
Mesh:setTexture attaches a texture to the Mesh
Mesh:setTextureCoordinate sets a texture coordinate in the texture coordinates array
Mesh:setTextureCoordinateArray sets or replace the whole texture coordinates array
Mesh:setTextureCoordinates sets several texture coordinates at once
Mesh:setVertex sets a vertex in the vertex array
Mesh:setVertexArray sets or replace the whole vertex array
Mesh:setVertices sets several vertices at once

Events

Constants