OpenGL ES (iPhone) мульти-текстурный (2D) код - PullRequest
3 голосов
/ 01 февраля 2010

У меня есть текстура из этого PNG:

alt text

И еще один из этого PNG:

alt text

Они оба имеют одинаковую функцию смешивания:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

Сначала я хочу увидеть их на одном полигоне. Я просто не смог найти простой пример этого. Рисование их на разных полигонах прекрасно работает, но я просто не могу «слить» их в одну текстуру. Любые рабочие примеры кода будут оценены по достоинству.

Вторая проблема состоит в том, чтобы сделать альфа-переменную зеркальной карты. Я вижу, что мне нужно как-то совместить текстуру ее альфы с основным цветом (созданным из моей переменной), но, опять же, у меня нет рабочего примера. кодов. Я начал изучать функцию glTexEnvi, но пока ничего не получил.

Пожалуйста, Я прошу у вас всего около 16 строк кода! Я погуглил всю сеть, но все еще застрял.

Двигатель, который я хочу реализовать (рабочий эскиз вспышки внизу поста) - здесь .

1 Ответ

0 голосов
/ 10 февраля 2011

Я не знаю точных строк кода, которые вам нужны, но кажется, что вы на правильном пути с 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, чтобы сделать это правильно.

...