Я использую AndEngine для проекта живых обоев, хотя я полагаю, что моя проблема должна быть универсальной для Android или даже Java полностью. До недавнего времени я использовал SVG для своих изображений из-за преимуществ масштабирования, однако из-за графических ограничений векторного искусства я решил переключиться на PNG, и я не могу понять, как получить раскраску HSV, которую я имел прежде, чтобы применить к новым спрайтам правильно.
В данный момент я просто показываю некоторые значения HSV в спрайте, и это работает технически, но не правильно. Я, кажется, не имею никакого реального контроля над насыщенностью или значением / яркостью вообще, как я делал раньше, у них, кажется, есть только два уровня, как будто они были установлены на 0.0 или 1.0 мгновенно, хотя сам цвет очень темный и явно не на полную величину / яркость и насыщенность в любом случае.
Я не вижу какой-либо реальной разницы между тем, что я делаю, и тем, какие настройки были у меня для изображений SVG, поэтому я немного растерялся. Предположительно где-то в глубине AndEngine было сделано что-то еще, чтобы заставить все это работать должным образом, и я просто не знаю, что значит работать сейчас. Соответствующий код, который я использую, более или менее:
float[] temphsv = new float[3];
int colorAfter = 0;
Sprite tempSprite = new Sprite(x, y, 400, 600, mSprite);
temphsv[0] = 120;
temphsv[1] = 1.0f;
temphsv[2] = 1.0f;
colorAfter = Color.HSVToColor(temphsv);
tempSprite.setColor(Color.red(colorAfter), Color.green(colorAfter), Color.blue(colorAfter));
С технической точки зрения, в коде сейчас изображение должно быть чисто ярко-зеленым, но вместо этого оно довольно темно-зеленое и все еще сохраняет затенение. Я полагаю, что это что-то тривиальное, так как оно отлично работает с изображениями SVG, так что любой совет о том, что мне не хватает, был бы великолепен.