11. Mesh
In the DirectX 3D mesh is usually stored in a .x file. However there are several build-in meshes such as sphere, box, teapot, .etc in the DirectX 9.0.  
- Build-in Box	
 
 
$app mesh box width height depth 
  
creates a build-in box mesh with width, height, and depth. 
 
- Build-in Cylinder	
 
 
$app mesh cylinder radius1 radius2 length slice stacks 
  
creates a build-in cylinder with radius1, radius2, length, slice, and stacks. 
 
- Build-in Polygon	
 
 
$app mesh polygon length sides 
 
creates a build-in polygon with length and sides. 
  
- Build-in Sphere	
 
 
$app mesh sphere radius slices stacks 
 
creates a build-in sphere with radius, slices and stacks.
  
 
- Build-in Teapot	
 
 
$app mesh teapot 
 
creates a teapot mesh. 
  
- Build-in Text	
 
 
$app mesh text content deviration extrusion 
 
creates a text mesh with content, deviration, and extrusion. 
  
- Build-in Torus	
 
 
$app mesh torus innerRadius outerRadius sides rings 
 
creates a torus mesh with inner radius, outer radius, sides, and rings. 
  
- Build-in Decl	
 
 
$app mesh decl nFaces nVertices Options Decl 
 
creates a build-in declaration mesh with faces vertices options and decl. 
  
- Mesh File		
 
 
$app mesh file path  
creates a mesh file with path. 
The regular use of mesh is described as follows: 
- In the shader class declares a mesh array variable mh. 
 
   
	variable  mh 
- In InitDeviceObjects method you can creates a mesh object mh(Object).
 
   
	set mh(Object) [$app mesh file $filename] 
In the RestoreDeviceObjects method you can restore the mesh mh(Object). 
  
  $mh(Object) restore
 
- In the InvalidateDeviceObjects method you can invalidate the mesh object mh(Object).
 
 
   
  $mh(Object) invalidate 
 
- In the DeleteDeviceObjects method you can release the mesh object mh(Object). 
 
   
  $mh(Object) delete  
Other mesh commands can be used for mesh processing such as clone and render 
clone mesh options decl [faces] 
 
clones mesh mh. 
 
$mh render [bopaque|id] [balpha] 
 
renders mesh mh. 
 
$mh getNumVertices 
 
returns the number of vertices of mesh mh. 
 
$mh getNumFaces 
 
returns the number of faces of mesh mh. 
 
$mh getVertexBuffer 
 
returns the pointer of vertex buffer. 
 
$mh setVertexBuffer 
 
sets the vertex buffer. 
 
$mh vbuffer 
 
creates a new vertex buffer object and copy vertex buffer of mesh mh to the new vertex buffer.  
 
$mh ibuffer 
 
creates a new index buffer object and copies index buffer of mesh mh to the new index buffer.  
 
$mh vlock [flags] 
 
locks vertex buffer of mesh mh with flags. 
 
$mh vunlock 
 
unlocks vertex buffer of mh. 
 
$mh ilock [flags] 
 
locks index buffer of mesh mh with flags. 
 
$mh iunlock 
 
unlocks index buffer of mh. 
 
$mh vcopy pbuffer size 
 
copies size of bytes from pbuffer to vertex buffer. 
 
$mh icopy pbuffer size 
 
copies size of bytes from pbuffer to index buffer.  
 
$mh computeTangent textureStageIndex tangentIndex binormalIndex wrap
computes tangent of mesh mh with textureStageIndex, tangentIndex, binormalIndex, and wrap.  
           |