OpenGL: наложение одной текстуры на другую и подавление белого фона - PullRequest
2 голосов
/ 25 июня 2010

Я начинающий программист Iphone opengl ES. У меня есть две текстуры, первая - это фон и занимает весь экран. Я печатаю второе изображение поверх первого изображения, но белый фон второго изображения покрывает часть фона. Я хочу, чтобы фон был виден там, где изображение на переднем плане не имеет цвета (или белого). Я не могу понять, как правильно использовать glBlendFunc.

перед печатью второго изображения я использую Blending со следующим:

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f (1,0f, 1,0f, 1,0f, 1,0f);

Изображения в: http://www.flickr.com/x/t/0097002/photos/vjv2010/

1 Ответ

0 голосов
/ 25 июня 2010

Я хочу, чтобы фон был виден там, где изображение на переднем плане не имеет цвета (или белого).

У вас есть два варианта, самый простой - использовать альфа-тестирование и добавитьальфа-канал для вашего изображения переднего плана, чтобы у каждого белого пикселя (или без цветовых зон) было специальное значение, скажем, 0.0f и все остальные 1.0f.

Затем при рендеринге переднего плана вы включаете альфа-тестирование с помощью glEnable(GL_ALPHA_TEST) и установить альфа-функцию с помощью glAlphaFunc(GL_GREATER, 0.5f) Это позволит принимать / рисовать только фрагменты с альфа-значением, превышающим 0,5f, и отбрасывать / не рисовать все фрагменты с альфа-значением, меньшим, чем 0,5f.

Secondвыбор заключается в том, чтобы использовать смешивание, как вы это сделали, но вам также необходимо добавить дополнительный альфа-канал на передний план и правильно установить glBlendFunc.

Подробнее здесь: http://iphone -3d-Program.labs.oreilly.com / ch06.html

...