Unity3D and Texture2D. GetPixel returns wrong values
Posted
by
Heisenbug
on Game Development
See other posts from Game Development
or by Heisenbug
Published on 2012-12-14T15:18:03Z
Indexed on
2012/12/14
17:21 UTC
Read the original article
Hit count: 755
I'm trying to use Texture2D set and get colors, but I encountered a strange behavior. Here's the code to reproduce it:
Texture2D tex = new Texture2D(2,2, TextureFormat.RGBA32 ,false);
Color col = new Color(1.0f,0.5f,1.0f,0.5f); //col values: 1.00, 0.500, 1.00, 0.500
tex.setPixel(0,0,col);
Color colDebug = tex.getPixel(0,0); //col values: 1.00, 0.502, 1.00, 0.502
The Color retrieved with getPixel is different from the Color set before. I initially thought about float approximation, but when inspectin col the value stored are correct, so can't be that reason.
It sounds weird even a sampling error because the getValue returns a value really similar that not seems to be interpolated with anything else. Anyway I tried even to add these lines after building the texture but nothing change:
this.tex.filterMode = FilterMode.Point;
this.tex.wrapMode = TextureWrapMode.Clamp;
this.tex.anisoLevel = 1;
What's my mistake? What am I missing?
In addition to that. I'm using tex to store Rect coordinates returned from atlas generation, in order to be able of retriving the correct uv coordinate of an atlas inside a shader. Is this a right way to go?
© Game Development or respective owner