Difference between revisions of "Mesh"
(27 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | '''Supported platforms:''' android | + | <!-- GIDEROSOBJ:Mesh --> |
+ | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/> | ||
'''Available since:''' Gideros 2012.09<br/> | '''Available since:''' Gideros 2012.09<br/> | ||
+ | '''Inherits from:''' [[Sprite]]<br/> | ||
+ | |||
=== Description === | === Description === | ||
− | + | The '''Mesh''' class is used to create and display custom constructed set of triangles (triangle meshes). It basically consists of 4 arrays: | |
− | Mesh class is used to create and display custom constructed set of triangles (triangle meshes). It basically consists of | + | *vertex |
− | 4 arrays: vertex | + | *index |
− | one way to set/modify these arrays. | + | *color (optional) |
− | + | *textureCoordinate (optional) | |
− | Mesh can be 2D or 3D, the latter expects an | + | 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 === |
− | '''Mesh | + | '''Drawing a colored Mesh rectangle''' |
− | < | + | <syntaxhighlight lang="lua"> |
+ | application:configureFrustum(45, -2*128) | ||
+ | --application:configureFrustum(0, 2*128) | ||
+ | |||
+ | local mesh = Mesh.new() | ||
stage:addChild(mesh) | stage:addChild(mesh) | ||
-- 1. vertex (0, 0) | -- 1. vertex (0, 0) | ||
Line 32: | Line 39: | ||
-- 3. vertex 0x0000ff color with 1 alpha | -- 3. vertex 0x0000ff color with 1 alpha | ||
-- 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) |
+ | </syntaxhighlight> | ||
+ | |||
{|- | {|- | ||
− | | style="width: 50%;"| | + | | style="width: 50%; vertical-align:top;"| |
+ | |||
=== Methods === | === Methods === | ||
− | [[Mesh.new]] | + | [[Mesh.new]] ''creates a new Mesh instance''<br/><!--GIDEROSMTD:Mesh.new(is3d) creates a new Mesh instance--> |
− | [[Mesh:clearColorArray]] | + | [[Mesh:clearColorArray]] ''clears the color array''<br/><!--GIDEROSMTD:Mesh:clearColorArray() clears the color array--> |
− | [[Mesh:clearIndexArray]] | + | [[Mesh:clearIndexArray]] ''clears the index array''<br/><!--GIDEROSMTD:Mesh:clearIndexArray() clears the index array--> |
− | [[Mesh:clearTexture]] | + | [[Mesh:clearTexture]] ''clears the Mesh texture''<br/><!--GIDEROSMTD:Mesh:clearTexture(slot) clears the Mesh texture--> |
− | [[Mesh:clearTextureCoordinateArray]] | + | [[Mesh:clearTextureCoordinateArray]] ''clears the texture coordinate array''<br/><!--GIDEROSMTD:Mesh:clearTextureCoordinateArray() clears the texture coordinate array--> |
− | [[Mesh:clearVertexArray]] | + | [[Mesh:clearVertexArray]] ''clears the vertex array''<br/><!--GIDEROSMTD:Mesh:clearVertexArray() clears the vertex array--> |
− | [[Mesh:getColor]] | + | [[Mesh:getColor]] ''returns color and alpha of the i-th element from color array''<br/><!--GIDEROSMTD:Mesh:getColor(i) returns color and alpha of the i-th element from color array--> |
− | [[Mesh:getColorArraySize]] | + | [[Mesh:getColorArraySize]] ''gets the size of the Color array''<br/><!--GIDEROSMTD:Mesh:getColorArraySize() gets the size of the Color array--> |
− | [[Mesh:getIndex]] | + | [[Mesh:getIndex]] ''returns the i-th element from index array''<br/><!--GIDEROSMTD:Mesh:getIndex(i) returns the i-th element from index array--> |
− | [[Mesh:getIndexArraySize]] | + | [[Mesh:getIndexArraySize]] ''gets the size of the Index array''<br/><!--GIDEROSMTD:Mesh:getIndexArraySize() gets the size of the Index array--> |
− | [[Mesh:getTextureCoordinate]] | + | [[Mesh:getTextureCoordinate]] ''returns u and v coordinate of the i-th element from texture coordinate array''<br/><!--GIDEROSMTD:Mesh:getTextureCoordinate(i) returns u and v coordinate of the i-th element from texture coordinate array--> |
− | [[Mesh:getTextureCoordinateArraySize]] | + | [[Mesh:getTextureCoordinateArraySize]] ''gets the size of the Texture Coordinate array''<br/><!--GIDEROSMTD:Mesh:getTextureCoordinateArraySize() gets the size of the Texture Coordinate array--> |
− | [[Mesh:getVertex]] | + | [[Mesh:getVertex]] ''returns x and y coordinate of the i-th element from vertex array''<br/><!--GIDEROSMTD:Mesh:getVertex(i) returns x and y coordinate of the i-th element from vertex array--> |
− | [[Mesh:getVertexArraySize]] | + | [[Mesh:getVertexArraySize]] ''gets the size of the Vertices array''<br/><!--GIDEROSMTD:Mesh:getVertexArraySize() gets the size of the Vertices array--> |
− | [[Mesh:resizeColorArray]] | + | [[Mesh:resizeColorArray]] ''resizes the Color array''<br/><!--GIDEROSMTD:Mesh:resizeColorArray(size) resizes the Color array--> |
− | [[Mesh:resizeIndexArray]] | + | [[Mesh:resizeIndexArray]] ''resizes the Index array''<br/><!--GIDEROSMTD:Mesh:resizeIndexArray(size) resizes the Index array--> |
− | [[Mesh:resizeTextureCoordinateArray]] | + | [[Mesh:resizeTextureCoordinateArray]] ''resizes the texture coordinates array''<br/><!--GIDEROSMTD:Mesh:resizeTextureCoordinateArray(size) resizes the texture coordinates array--> |
− | [[Mesh:resizeVertexArray]] - <br/> | + | [[Mesh:resizeVertexArray]] ''resizes the vertex array''<br/><!--GIDEROSMTD:Mesh:resizeVertexArray(size) resizes the vertex array--> |
− | [[Mesh:setColor]] | + | [[Mesh:setAutoSort]] ''enables depth sorting for translucency''<br/><!--GIDEROSMTD:Mesh:setAutoSort(bool) enables depth sorting for translucency--> |
− | [[Mesh:setColorArray]] | + | [[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]] - <br/> | + | [[Mesh:setColorArray]] ''sets or replace the whole color array''<br/><!--GIDEROSMTD:Mesh:setColorArray(colors) sets or replace the whole color array--> |
− | [[Mesh:setGenericArray]] | + | [[Mesh:setColors]] ''sets several colors at once''<br/><!--GIDEROSMTD:Mesh:setColors(colors) sets several colors at once--> |
− | [[Mesh:setIndex]] | + | [[Mesh:setCullMode]] ''sets the face culling mode''<br/><!--GIDEROSMTD:Mesh:setCullMode(mode) sets the face culling mode--> |
− | [[Mesh:setIndexArray]] - <br/> | + | [[Mesh:setGenericArray]] ''sets or replace a generic array''<br/><!--GIDEROSMTD:Mesh:setGenericArray(index,type,mult,count,data) sets or replace a generic array--> |
− | [[Mesh: | + | [[Mesh:setIndex]] ''sets an index in the index array''<br/><!--GIDEROSMTD:Mesh:setIndex(i,index) sets an index in the index array--> |
− | [[Mesh:setTexture]] | + | [[Mesh:setIndexArray]] ''sets or replace the whole index array''<br/><!--GIDEROSMTD:Mesh:setIndexArray(indices) sets or replace the whole index array--> |
− | [[Mesh:setTextureCoordinate]] | + | [[Mesh:setIndices]] ''sets several indices at once''<br/><!--GIDEROSMTD:Mesh:setIndices(indices) sets several indices at once--> |
− | [[Mesh:setTextureCoordinateArray]] | + | [[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]] | + | [[Mesh:setPrimitiveType]] ''sets the type of primitives to render''<br/><!--GIDEROSMTD:Mesh:setPrimitiveType(primitiveType) sets the type of primitives to render--> |
− | [[Mesh:setVertex]] | + | [[Mesh:setTexture]] ''attaches a texture to the Mesh'' <br/><!--GIDEROSMTD:Mesh:setTexture(texture,slot) attaches a texture to the Mesh--> |
− | [[Mesh:setVertexArray]] | + | [[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]] | + | [[Mesh:setTextureCoordinateArray]] ''sets or replace the whole texture coordinates array''<br/><!--GIDEROSMTD:Mesh:setTextureCoordinateArray(textureCoordinates) sets or replace the whole texture coordinates array--> |
− | | style="width: 50%;"| | + | [[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;"| | ||
+ | |||
=== Events === | === Events === | ||
=== Constants === | === Constants === | ||
|} | |} | ||
+ | |||
+ | {{GIDEROS IMPORTANT LINKS}} |
Latest revision as of 23:37, 20 February 2024
Supported platforms:
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)
MethodsMesh.new creates a new Mesh instance |
EventsConstants |