Share via


Mesh.Mesh(Int32,Int32,MeshFlags,VertexFormats,Device) Constructor (Microsoft.DirectX.Direct3D)

How Do I...?

  • Create a Mesh Object

Creates a new Mesh instance.

Definition

Visual Basic Public Sub New( _
    ByVal numFaces As Integer, _
    ByVal numVertices As Integer, _
    ByVal options As MeshFlags, _
    ByVal vertexFormat As VertexFormats, _
    ByVal device As Device _
)
C# public Mesh(
    int numFaces,
    int numVertices,
    MeshFlags options,
    VertexFormats vertexFormat,
    Device device
);
C++ public:
 Mesh(
    int numFaces,
    int numVertices,
    MeshFlags options,
    VertexFormats vertexFormat,
    Devicedevice
);
JScript public function Mesh(
    numFaces : int,
    numVertices : int,
    options : MeshFlags,
    vertexFormat : VertexFormats,
    device : Device
);

Parameters

numFaces System.Int32
Number of faces for the mesh. The valid range is greater than 0 and one less than the maximum Int32Leave Site (typically 65534), because the last index is reserved.
numVertices System.Int32
Number of vertices for the mesh. This parameter must be greater than 0.
options Microsoft.DirectX.Direct3D.MeshFlags
One or more flags from the MeshFlags enumeration that specify creation options for the mesh (excepting the Simplify* and Optimize* flags).
vertexFormat Microsoft.DirectX.Direct3D.VertexFormats
One or more flags from the VertexFormats enumeration that specify the format of the mesh vertices.
device Microsoft.DirectX.Direct3D.Device
A Device object that represents the device associated with the mesh.

Remarks

Exceptions

InvalidCallException

The method call is invalid. For example, a method's parameter might contain an invalid value.

OutOfMemoryExceptionLeave Site

Microsoft Direct3D could not allocate sufficient memory to complete the call.

How Do I...?

Create a Mesh Object

This example shows how to create a Mesh object.

In the following C# code example, device is assumed to be the rendering Device.

              [C#]
              
int numberVerts = 8;
short[] indices = {
    0,1,2, // Front Face 
    1,3,2, // Front Face 
    4,5,6, // Back Face 
    6,5,7, // Back Face 
    0,5,4, // Top Face 
    0,2,5, // Top Face 
    1,6,7, // Bottom Face 
    1,7,3, // Bottom Face 
    0,6,1, // Left Face 
    4,6,0, // Left Face 
    2,3,7, // Right Face 
    5,2,7 // Right Face 
};

Mesh mesh = new Mesh(numberVerts * 3, numberVerts, MeshFlags.Managed,
                     CustomVertex.PositionColored.Format, device);

using(VertexBuffer vb = mesh.VertexBuffer)
{
    GraphicsStream data = vb.Lock(0, 0, LockFlags.None);

    data.Write(new CustomVertex.PositionColored(-1.0f, 1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, -1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, 1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, -1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, 1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, 1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, -1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, -1.0f, -1.0f, 0x00ff00ff));

    vb.Unlock();
}

using (IndexBuffer ib = mesh.IndexBuffer)
{
    ib.SetData(indices, 0, LockFlags.None);
}