Я работаю над проектом, который находится в GLES 1.1. Это должен быть GLES 1.1.
Но он должен сделать некоторое предварительное умножение, т.е. получить каждый пиксель и изменить его с rgba = r*a,b*a,g*a,a. А потом наоборот.
Если бы у меня был доступ к шейдерам, это не было бы проблемой, но, конечно, с gles 1.1 у меня их нет.
Делать это с помощью readpixels, а затем делать это на процессоре и возвращать его обратно ужасно медленно, поэтому я пытаюсь придумать, как я могу обмануть.
Теперь я могу выполнить предварительное умножение, воспользовавшись преимуществами glTexEnvi.
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE1);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_ALPHA);
но потом мне нужно отменить операцию. Для жизни меня я не могу придумать способ обратить его вспять.
Если бы у всех была одинаковая альфа-версия, я мог бы злоупотреблять функциями glLighting, но, к сожалению, этого не происходит.
У меня такое чувство, что я немного обречен.
Возможно, я мог бы просто использовать общие контексты и сделать фрагмент GLES 2.0... но я чувствую, что это будет связано с собственными накладными расходами.
если у кого-то есть какие-либо идеи или мысли по этому поводу, я был бы очень признателен, если бы они были услышаны!