Эффект, который вы ищете, может быть достигнут с помощью текстурных комбайнеров в OpenGL ES 1.1. По умолчанию каждая активированная вами единица текстуры настроена на умножение выходных данных предыдущего этапа на цвет текущей текстуры. В случае первого текстурного блока предыдущий этап - просто цвет вершины. Изменяя состояние объединителя текстур, вы можете вместо этого добавлять, вычитать, интерполировать или брать точечные продукты из ваших образцов текстур.
Второй и третий примеры на связанной странице, которые интерполируют две текстуры, должны быть очень похожи на то, что вы пытаетесь сделать. Если вы сравните исходный код для двух примеров, вы увидите, что они почти идентичны, за исключением конфигурации для GL_SRC2_RGB
/ GL_SRC2_ALPHA
и GL_OPERAND2_RGB
/ GL_OPERAND2_ALPHA
. Что вам нужно будет здесь указать, зависит от того, где / как вы генерируете коэффициент смешивания для двух текстур. Вы можете исходить из цвета вершины, указав GL_PRIMARY_COLOR
для GL_SRC2_*
, что не показано в примерах.
(Примечание. На странице, на которую я ссылался, рекомендуется использовать GLSL вместо объединителей текстур. К сожалению, этот вариант не подходит, если вашему программному обеспечению требуется работать на более старом оборудовании, которое не поддерживает OpenGL ES 2.0.)