Какой простой способ украсить текстуры в Quad в OpenGL ES? - PullRequest
1 голос
/ 01 июля 2011

Я показываю 2D спрайты, которые построены с использованием нескольких текстур (с прозрачностью), примененных к квадрам.Я включил массив цветов для glDrawArrays и знаю, как использовать это, чтобы изменить соотношение каждого цвета и затемнить текстуры (то есть уменьшить все цвета на одну и ту же величину).

Все это делается с использованием предварительно умноженногоальфа и следующее:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

Есть ли простой способ также осветлить текстуру?

Я пытался использовать GL_ADD, но это приводит к тому, что весь квадроцикл становится видимым (т.е. пикселикоторые ранее были прозрачными, больше не нужны).

Спасибо.

1 Ответ

2 голосов
/ 02 июля 2011

Это довольно просто: нарисуйте еще один квад по области, которую вы хотите сделать ярче, с этим квадром наложения, используя

glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ONE);

что эффективно означает, что вы берете базовый цвет (dst, GL_ONE) как есть и добавляете еще одну дробь того же цвета (src, GL10.GL_DST_COLOR).

Дробь, которую вы добавляете, определяется цветом четырехугольника, так что теперь вы можете настроить яркость, установив цвета вершин оверлейного квадрата в {0.0f, 0.0f, 0.0f} (без подсветки) в {1.0f, 1.0f, 1.0f} («удвоение» яркости). Конечно, вы также можете увеличить яркость отдельных цветов, подкорректировав факторы.

Удачи!

Приветствия, Aert.

...