Пожалуйста, помогите с мультитекстурированием (2D) кода OpenGL ES (iPhone)!
У меня есть текстура из этого PNG:
http://gotoandplay.freeblog.hu/files/tan0_Diffuse_1.png
И еще один из этого PNG:
http://gotoandplay.freeblog.hu/files/tan0_Specular_1.png
Они оба имеют одинаковую функцию смешивания:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
Сначала я хочу увидеть их на одном полигоне. Я просто не мог найти простой пример этого. Рисование их на разных полигонах прекрасно работает, но я просто не могу "слить" их в одну текстуру. Любые рабочие примеры кодовых строк будут хорошо оценены.
Вторая проблема - сделать альфа-переменную зеркальной карты. Я вижу, что мне нужно как-то комбинировать текстуры, это альфа с основным цветом (созданным из моей переменной), но опять же, у меня нет рабочего примера кодов. Я начал изучать функцию glTexEnvi, но пока у меня нет никакого результата.
Пожалуйста, я прошу вас всего за 16 строк кода! Я погуглил всю сеть, но все еще застрял.
Движок, который я хочу реализовать (рабочий флэш-эскиз внизу поста): http://gotoandplay.freeblog.hu/archives/2010/01/07/compactTangram_072_-_tan_rendering_labs/
1 ответ
Я не знаю точных строк кода, которые вам нужны, но похоже, что вы на правильном пути с glTexEnv... Эта книга о opengles 1.1 рассказывает об этом. Я думаю, что вы хотите, чтобы объединители текстур:
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myTextureObject);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
// Tell OpenGL which arithmetic operation to use:
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, <operation>);
// Set the first argument:
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, <source0>);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, <operand0>);
// Set the second argument:
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, <source1>);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, <operand1>);
Я не знаю, достигнет ли это того, чего вы хотите, хотя, вам все еще могут понадобиться FBO, чтобы сделать это правильно.