Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


SetPixelData

Sets the raw data of an entire mipmap level of a face directly in CPU memory.
Read time 4 minutesLast updated 10 days ago

Definition

  • Type: Method
  • Namespace: UnityEngine
  • Assembly: UnityEngine.CoreModule

SetPixelData<T>(`<>[], int, CubemapFace, int)

Sets the raw data of an entire mipmap level of a face directly in CPU memory.
public void SetPixelData<T>(T[] data, int mipLevel, CubemapFace face, int sourceDataStartIndex = 0)

Parameters

data

The array of data to use.

mipLevel

The mipmap level to write to. The range is
0
through the texture's Texture.mipmapCount. The default value is
0
.

The CubemapFace to write to.

sourceDataStartIndex

The index in the source array to start copying from. The default value is
0
.

Remarks

This method sets pixel data for the texture in CPU memory. Texture.isReadable must be
true
, and you must call Cubemap.Apply after
SetPixelData
to upload the changed pixels to the GPU.
SetPixelData
is useful if you want to load compressed or other non-color texture format data into a texture.
The size of the
data
array must be the width × height of the mipmap level, and the data layout must match the texture format, otherwise
SetPixelData
fails. You can use
byte
for
T
if you don't want to define a custom struct to match the texture format.
Unity throws an exception when
SetPixelData
fails.

Examples

using UnityEngine;public class ExampleScript : MonoBehaviour{ public void Start() { Cubemap cubemap = new Cubemap(2, TextureFormat.RGB24, true); var byteArray = new byte[] {255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 235, 4, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 0, 255}; cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveX); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveX, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeX, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeX, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveY); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveY, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeY, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeY, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveZ); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveZ, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeZ, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeZ, 12); cubemap.Apply(updateMipmaps: false); }}

SetPixelData<T>(NativeArray<T>, int, CubemapFace, int)

Sets the raw data of an entire mipmap level of a face directly in CPU memory.
public void SetPixelData<T>(NativeArray<T> data, int mipLevel, CubemapFace face, int sourceDataStartIndex = 0) where T : struct

Parameters

The array of data to use.

mipLevel

The mipmap level to write to. The range is
0
through the texture's Texture.mipmapCount. The default value is
0
.

The CubemapFace to write to.

sourceDataStartIndex

The index in the source array to start copying from. The default value is
0
.

Remarks

This method sets pixel data for the texture in CPU memory. Texture.isReadable must be
true
, and you must call Cubemap.Apply after
SetPixelData
to upload the changed pixels to the GPU.
SetPixelData
is useful if you want to load compressed or other non-color texture format data into a texture.
The size of the
data
array must be the width × height of the mipmap level, and the data layout must match the texture format, otherwise
SetPixelData
fails. You can use
byte
for
T
if you don't want to define a custom struct to match the texture format.
Unity throws an exception when
SetPixelData
fails.

Examples

using UnityEngine;public class ExampleScript : MonoBehaviour{ public void Start() { Cubemap cubemap = new Cubemap(2, TextureFormat.RGB24, true); var byteArray = new byte[] {255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 235, 4, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 0, 255}; cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveX); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveX, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeX, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeX, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveY); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveY, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeY, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeY, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveZ); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveZ, 12); cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeZ, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeZ, 12); cubemap.Apply(updateMipmaps: false); }}