У меня есть текстура с альфой. И я хочу подкрасить его каким-то цветом, поэтому он будет окрашен в зависимости от значения цвета альфа, но избыточная непрозрачность будет определяться только текстурой alpha.OpenGL ES: Как оттенять текстуру с цветом
Это похоже на мульти текстурирование, но с цветом вместо второй текстуры. Как это сделать?
(Обновлено) Я попытался настроить комбинатор текстур. Цвет тонирован, но проблема с альфой - это не имеет значения из текстуры (например, маски). Мой код в данный момент:
glActiveTexture (GL_TEXTURE0); // do we need stage #1?
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, (GLfloat*) &tintColor_);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_ONE_MINUS_SRC_ALPHA);
// this doesn't work for alpha:
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
Скриншоты:
Нет тонировки:
Оттенок с RGBA = (0, 0,5, 1, 0,5):
Ваш код кажется правильным для меня. Не могли бы вы приложить скриншот альфа-проблемы или описать, что с ним плохо. – iHunter
Не могли бы вы загрузить текстуру? –
Также, рендеринг кода? –