This topic has not yet been rated - Rate this topic

Texture2D.GetData Generic Method (T[], Int32, Int32)

Copies texture data into an array.

Namespace: Microsoft.Xna.Framework.Graphics
Assembly: Microsoft.Xna.Framework (in microsoft.xna.framework.dll)

public void GetData<T> (
         T[] data,
         int startIndex,
         int elementCount
) where T : ValueType

Type Parameters

T
The type of the elements in the array. This is usually a Microsoft.Xna.Framework.Graphics.PackedVector type that matches the Format of the texture, but it can be any fundamental type that matches the bit size of the surface format.

Parameters

data
The array to receive texture data.
startIndex
The index of the element in the array at which to start copying.
elementCount
The number of elements to copy.
Exception type Condition
ArgumentNullException data must be of sufficient length to receive the data.
InvalidOperationException The vertex stride is larger than the vertex buffer, or the vertex stride is too small for the type of data requested.
An InvalidOperationException is thrown if an attempt is made to modify (for example, calls to the SetData method) a resource that is currently set on a graphics device.

In this example, the color of the pixel beneath the mouse is retrieved from the back buffer.

if (Mouse.GetState().LeftButton == ButtonState.Pressed &&   
    // If the left button is pressed
    Mouse.GetState().X > 0 && Mouse.GetState().Y > 0 &&     
    // and we are inside the game window
    (Mouse.GetState().X < 
    GraphicsDevice.PresentationParameters.BackBufferWidth) &&
    (Mouse.GetState().Y < 
    GraphicsDevice.PresentationParameters.BackBufferHeight))
{
    backBufferData = new ResolveTexture2D(
        GraphicsDevice,
        GraphicsDevice.PresentationParameters.BackBufferWidth,
        GraphicsDevice.PresentationParameters.BackBufferHeight,
        1,
        GraphicsDevice.PresentationParameters.BackBufferFormat);


    Rectangle sourceRectangle =
        new Rectangle(Mouse.GetState().X, Mouse.GetState().Y, 1, 1);

    Color[] retrievedColor = new Color[1];

    GraphicsDevice.ResolveBackBuffer(backBufferData);

    backBufferData.GetData<Color>(
        0,
        sourceRectangle,
        retrievedColor,
        0,
        1);
}
Xbox 360, Windows XP SP2, Windows Vista, Zune
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ