Как я могу получить текстуру OpenGl формы многоугольника из изображения?

У меня есть изображение и выпуклый многоугольник, определяемый массивом координат x, y.

Как мне получить представление Texture2D части изображения, охватываемой полигоном?

По сути, мне просто нужна текстура с изображения с прозрачной частью за пределами многоугольника.

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

Любые указатели/фрагменты будут оценены. Спасибо!


person Monte Hurd    schedule 24.10.2009    source источник


Ответы (1)


Интересно, что ваш вопрос отмечен как cocos2d, так и opengl, но здесь я дам ответ, ориентированный на OpenGL. Вместо того, чтобы создавать новый объект текстуры для достижения желаемого эффекта, я думаю, вы захотите использовать буфер трафарета. Процедура будет выглядеть следующим образом:

  1. При создании вашего FBO прикрепите к нему буфер трафарета.
  2. Очистите буфер трафарета.
  3. Отключите запись в буферы цвета и глубины; включите запись в трафарет.
  4. Рендерите полигон и не заморачивайтесь с текстурированием.
  5. Снова включить запись в буферы цвета и глубины; включить тестирование трафарета.
  6. Визуализируйте текстурированный четырехугольник, который соответствует ограничивающей рамке вашего многоугольника.

И iPhone 3GS, и симулятор iPhone поддерживают 8-битный буфер трафарета. Для старых iPhone вы можете проделать аналогичный трюк с альфа-компонентом фреймбуфера, а не с буфером трафарета...

person prideout    schedule 26.10.2009
comment
провел большую часть недели, пока боролся с этим, поэтому спасибо за помощь! в настоящее время пытаюсь расшифровать подход альфа-компонента, о котором вы упомянули. еще раз спасибо. - person Monte Hurd; 27.10.2009