Texture2D.GetData Generic Method (Int32, Nullable<Rectangle>, T[], Int32, Int32)

Gets a copy of 2D texture data, specifying a mipmap level, source rectangle, start index, and number of elements.

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

Syntax

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

Type Parameters

Parameters

  • level
    Type: Int32
    Mipmap level.
  • rect
    Type: Nullable<Rectangle>
    The section of the texture to copy. null indicates the data will be copied from the entire texture.
  • data
    Type: T
    Array of data.
  • startIndex
    Type: Int32
    Index of the first element to get.
  • elementCount
    Type: Int32
    Number of elements to get.

Exceptions

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.

Example

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

sourceTexture.SetData<Color>(sourceColorData);

// Initialize a texture with texture data from another texture
sourceTexture.GetData<Color>(destinationColorData);
destinationTexture.SetData<Color>(destinationColorData);
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 Texture2D(
        GraphicsDevice,
        GraphicsDevice.PresentationParameters.BackBufferWidth,
        GraphicsDevice.PresentationParameters.BackBufferHeight);

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

    Color[] retrievedColor = new Color[1];

    backBufferData.GetData<Color>(
        0,
        sourceRectangle,
        retrievedColor,
        0,
        1);
}

See Also

Reference

Texture2D Class
Texture2D Members
Microsoft.Xna.Framework.Graphics Namespace

Platforms

Xbox 360, Windows 7, Windows Vista, Windows XP