2009-08-05 5 views
2

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

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

1) Я создал цветной Texture2D, черно-белую версию первого текстуры и третий Texture2D называется маска

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

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

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

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

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

ответ

0

Для чего-то, что действительно будет работать на iPhone, попробуйте texture combiners.

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

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