public BufferColor GetColorFromUV(double u, double v, TextureSampleMode mode = TextureSampleMode.Tile)
{
switch(mode)
{
case TextureSampleMode.Clamp:
if (u > 1.0)
{
u = 1.0;
}
else if (u < 0.0)
{
u = 0.0;
}
if (v > 1.0)
{
v = 1.0;
}
else if (v < 0.0)
{
v = 0.0;
}
return _buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor;
case TextureSampleMode.Explicit:
if (u > 1.0 || u < 0.0 || v > 1.0 || v < 0.0)
{
return BufferColor.Black;
}
else
{
return _buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor;
}
default:
case TextureSampleMode.Tile:
return _buffer[Utils.Mod((int)(v * _height), _height), Utils.Mod((int)(u * _width), _width)].BackColor;
}
}