Compartilhar via


VertexBuffer.Lock Method (Int32, Int32, LockFlags)

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Locks a range of vertex data and obtains the vertex buffer memory.

Namespace:  Microsoft.WindowsMobile.DirectX.Direct3D
Assembly:  Microsoft.WindowsMobile.DirectX (in Microsoft.WindowsMobile.DirectX.dll)

Syntax

'Declaration
Public Function Lock ( _
    offsetToLock As Integer, _
    sizeToLock As Integer, _
    flags As LockFlags _
) As GraphicsStream
'Usage
Dim instance As VertexBuffer
Dim offsetToLock As Integer
Dim sizeToLock As Integer
Dim flags As LockFlags
Dim returnValue As GraphicsStream

returnValue = instance.Lock(offsetToLock, _
    sizeToLock, flags)
public GraphicsStream Lock(
    int offsetToLock,
    int sizeToLock,
    LockFlags flags
)
public:
GraphicsStream^ Lock(
    int offsetToLock, 
    int sizeToLock, 
    LockFlags flags
)
member Lock : 
        offsetToLock:int * 
        sizeToLock:int * 
        flags:LockFlags -> GraphicsStream 

Parameters

  • offsetToLock
    Type: System.Int32
    Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both sizeToLock and offsetToLock.
  • sizeToLock
    Type: System.Int32
    Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both sizeToLock and offsetToLock.

Return Value

Type: Microsoft.WindowsMobile.DirectX.GraphicsStream
A GraphicsStream that represents the locked vertex buffer.

Exceptions

Exception Condition
InvalidCallException

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

Remarks

Note that the .NET Compact Framework does not support multiple lock calls.

When using this method to retrieve an array from a resource that was not created with a type, always use the overload that accepts a type.

The Discard and NoOverwrite values for LockFlags are valid only on buffers created with Dynamic specified for Usage.

Examples

The following example shows how to use the Lock method.

' Create several meshes and associated data.
Dim i As Integer
For i = 0 To numberOfMeshes
    Dim vertexData As GraphicsStream

    meshes(i) = Mesh.Box(device, 1F, 1F, 1F)

    ' Arrange the boxes in a grid, with each
    ' successive box farther in the distance.
    meshLocations(i) = New Vector3((i Mod 3) * 2 - 2, i / 3 * 2 - 2, i)

    ' Compute the bounding box for a mesh.
    Dim description As VertexBufferDescription = meshes(i).VertexBuffer.Description
    vertexData = meshes(i).VertexBuffer.Lock(0, 0, LockFlags.ReadOnly)
    Geometry.ComputeBoundingBox(vertexData, meshes(i).NumberVertices, description.VertexFormat, meshBoundingBoxMinValues(i), meshBoundingBoxMaxValues(i))
    meshes(i).VertexBuffer.Unlock()
Next i
// Create several meshes and associated data.
for (int i = 0; i < numberOfMeshes; i++)
{
    GraphicsStream vertexData;

    meshes[i] = Mesh.Box(device, 1.0f, 1.0f, 1.0f);

    // Arrange the boxes in a grid, with each
    // successive box farther in the distance.
    meshLocations[i] = new Vector3(((i % 3) * 2) - 2,
                                ((i / 3) * 2) - 2, i);

    // Compute the bounding box for a mesh.
    VertexBufferDescription description =
        meshes[i].VertexBuffer.Description;
    vertexData = meshes[i].VertexBuffer.Lock
                             (0, 0, LockFlags.ReadOnly);
    Geometry.ComputeBoundingBox(vertexData,
        meshes[i].NumberVertices,description.VertexFormat,
        out meshBoundingBoxMinValues[i],
        out meshBoundingBoxMaxValues[i]);
    meshes[i].VertexBuffer.Unlock();
}

.NET Framework Security

Platforms

Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Compact Framework

Supported in: 3.5, 2.0

See Also

Reference

VertexBuffer Class

VertexBuffer Members

Lock Overload

Microsoft.WindowsMobile.DirectX.Direct3D Namespace