Texture2D Alpha channel

반응형

내가원하는 것은 간단하다

1. 원하는 텍스처를 가져온다

2. 해당 텍스처의 알파값을 가져온다

3. 새 텍스처에 알파값을 넣는다.


이를 위해 알아야 할 것은 아래와 같다.

1. 텍스처 정보값을 얻기 위해 GetPixel, SetPixel을 쓰려면

   해당 텍스처가 Read/Write Enabled 옵션이 설정되어 있어야 한다.


2. 이상하게 RGB16으로하면 안된다. RGB32로 해야 한다.


3. 이건 왠지 유니티 버그인듯 한데 GetPixel() 함수를 사용하면 제대로 값을 가져오지 못한다

   그런데 GetPixels() 함수로 값을 가져와서 for loop을 돌면서 SetPixel()을 사용하면 제대로 된다.


Texture2D destTex = new Texture2D(sourceTex.width, sourceTex.height, 

             sourceTex.format, false);


Color destPix;

Color[] sourcePixels = sourceTex.GetPixels();

for (int h = 0; h < sourceTex.height; h++)

{

      for (int w = 0; w < sourceTex.width; w++)

      {

            destPix.r = sourcePixels[h * sourceTex.width + w].a;

            destPix.g = sourcePixels[h * sourceTex.width + w].g;

            destPix.b = sourcePixels[h * sourceTex.width + w].b;

            destPix.a = sourcePixels[h * sourceTex.width + w].r;

            destTex.SetPixel(w, h, destPix);

        }

 }

destTex.Apply();

'Unity > Unity Study' 카테고리의 다른 글

SV_POSITION과 POSITION  (0) 2016.04.15
visual studio 2012 tools  (0) 2015.09.14
unity 에서 log보기  (0) 2015.07.07
singleton  (0) 2015.02.18
C# keywords  (0) 2015.02.18
TAGS.

Comments