Как свернуть пять текстур OpenGL в одну?

Я хочу объединить 5 "подслоев" в одну текстуру (вы знаете, что-то вроде Flatten Image в Photoshop) в OpenGL ES 1.x iPhone. Я новичок в OpenGL и пока не нашел ответа.


person Geri Borbás    schedule 28.01.2010    source источник


Ответы (2)


предполагая, что это изображения для начала, вы не можете просто нарисовать их последовательно на изображении в памяти

код

person acheo    schedule 28.01.2010

Вам не нужен GL для объединения текстур. Просто сделайте математику для каждого текселя в C.

Теперь, если вы хотите использовать GL, вам нужно отрендерить в текстуру (ваш окончательный результат).

Это делается с помощью OES_framebuffer_object. Теперь то, как вы рисуете эту текстуру, полностью зависит от вас. Вы можете нарисовать 5 четырехугольников, каждый с одной текстурой, и использовать смешивание, чтобы объединить их (вам нужно будет указать, какую математику вы хотите применить), вы можете использовать мультитекстурирование, чтобы выполнить работу за меньшее количество проходов (и использовать Texture Environments, чтобы указать, как объединять).

Какую операцию выравнивания вы хотите?

person Bahbar    schedule 28.01.2010
comment
Простой 5 PNG с альфа-каналом. Последние 2 изображения могут быть применены с режимом наложения ADD/SCREEN (я не знаю имен openGL), мне нужен только белый компонент из них. Multi-texturing/Texture Environmets звучит нормально, я видел что-то подобное, но с примером вы могли бы мне очень помочь (спасибо за ответ). - person Geri Borbás; 28.01.2010
comment
Да, я забыл упомянуть, что между подтекстурами нет смещения, простой бутерброд, которого я хочу добиться. - person Geri Borbás; 28.01.2010
comment
openGL не поддерживает PNG. Сначала вам нужно будет загрузить их как текстуры. OpenGL определяет режимы комбинирования мультитекстурирования через glTexEnv. Нужно ли вам расширение для объединения текстур или нет, зависит от того, как именно вы хотите объединить эти 5 текстур (точно так же, как каждый слой в фотошопе указывает, как он сочетается с предыдущими слоями). Поскольку вы не сказали, я не могу ответить на этот конкретный вопрос. Я не получил ваш последний комментарий. - person Bahbar; 29.01.2010
comment
Эй, спасибо! Я вижу в тебе желание ответить на мой вопрос. У меня есть теневой слой, PNG с альфа-каналом, загруженным в текстуру с именем layer[0]. Следующий слой — layer[1] — представляет собой простой цветной многоугольник PNG с альфой, простое смешивание альфы с предыдущим нужно. 3-й и 4-й — это слои освещения — слой[2] и слой[3]. Они могут быть как непрозрачными PNG в градациях серого с ДОБАВЛЕННЫМ смешиванием, так и белыми PNG с альфа-слиянием с простым альфа-смешением. Непрозрачность последних двух слоев должна быть переменной. Это то, что я хочу сделать (7 раз за раз, так как у меня есть 7 кусочков головоломки). - person Geri Borbás; 29.01.2010
comment
Предварительный сценарий Flash здесь: gotoandplay.freeblog.hu/archives/2010 /01/07/ (из 5-го абзаца) - person Geri Borbás; 29.01.2010