iPhone OpenGL ES Texture2D Маскировка - PullRequest
2 голосов
/ 05 августа 2009

Какой лучший выбор при попытке замаскировать текстуру например, ColorSplash или другие приложения, такие как iSteam и т. д.

Я начал изучать OPENGL ES как ... 4 дня назад (я всего новичок) и попробовал следующий подход:

1) Я создал цветную texture2D, версию первого в градациях серого. текстура и третий texture2D под названием маска

2) Я также создал texture2D для кисти ... которая имеет оттенки серого и непрозрачный (кисть = черный = 0,0,0,1 и окружающая среда = белый = 1,1,1,1). Моим намерением было создать сглаженную кисть с гладкой края, но я в порядке с нормальным прямо сейчас

3) Я искал технику маскировки в интернете и нашел это учебное пособие ZeusCMD - учебные пособия по проектированию и разработке: учебные пособия по программированию ES OpenGL - маскировка о маскировке. Учебник говорит мне использовать смешивание для достижения маскировка ... сначала нарисуйте цветной, а затем замаскируйте glBlendFunc (GL_DST_COLOR, GL_ZERO) и затем в оттенках серого с glBlendFunc (GL_ONE, GL_ONE) ... и это дает мне что-то близкое к что я хочу ... но не совсем то, что я хочу. Результат замаскирован, но это как-то ярко выражено

4) Для рисования на маску текстуры я использовал дополнительный объект буфера кадра (FBO)

Я не очень доволен полученным изображением (закрашенная картинка) ни со скоростью, достигнутой этим методом. Я думаю нормальный путь было рисовать непосредственно в оттенках серого (наложение) texture2D, влияющих только это альфа-канал в тех местах, где кисть попадает. Есть ли быстрый способ достичь этого? Я много искал и не получил ответ понятен и понятен. Затем в основном цикле розыгрыша I можно только нарисовать цветную текстуру, а затем смешать оттенки серого поверх с glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA).

Я просто хочу научиться использовать OPENGL ES, и это сводит меня с ума, потому что я не могу заставить его работать должным образом. Совет, ссылка на учебник будет высоко ценится.

1 Ответ

0 голосов
/ 06 августа 2009

Для того, что действительно будет работать на iPhone, попробуйте текстурный комбинатор .

Я использовал их, чтобы замаскировать текстуру RGBA против другой, преобразованной альфа-текстуры.
Это было для генерации сложной тени в отсутствие буфера трафарета,
но твоя ситуация не кажется такой уж другой.

Обратите внимание, что эта ссылка объясняет объединители в терминах фрагментных шейдеров, что хорошо работает.
К сожалению, объединители сложнее, чем их шейдерные аналоги.

...