opengl — c ++ opengGL: рисовать полигон + обработка изображений внутренних пикселей

Я использую OpenGL и C ++, делая обработку изображений. Идея проста: я загружу изображение, нарисую многоугольник, щелкнув, а затем применю эффект (например, обесцвечивание) только к пикселям внутри только что созданной формы многоугольника.

Кто-нибудь может дать мне какое-нибудь указание о том, как ограничить эффект пикселями внутри многоугольника? Загрузка изображения и рисование многоугольника не проблема

0

Решение

Предположим следующую ситуацию:

  • Картинка, на которую вы хотите применить эффект, занимает весь экран
  • Изображение визуализируется с использованием opengl, вероятно, с помощью простого шейдера, а изображение передается как текстура.

Вы можете сделать следующий подход:

  • рассматривать экран как большую текстуру
  • вы рисуете многоугольник, который будет визуализироваться поверх визуализированной текстуры
  • внутри вершин многоугольника вставьте ядра ультрафиолета, соответствующие 2D координатам на экране (от пространства экрана до пространства ультрафиолета (0, 1))
  • нарисуй картинку нормалью
  • в верхней части рисунка нарисуйте полигон, используя то же изображение, что и текстура, но с другим шейдером

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

Это поможет вам избежать буфера трафарета.

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

0

Другие решения


По вопросам рекламы [email protected]