Unity3D and Texture2D. GetPixel returns wrong values
- by Heisenbug
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?