0

我正在使用 opengl 和 c++ 进行图像处理。这个想法很简单,我将加载一个图像,通过单击绘制一个多边形,然后仅对刚创建的多边形形状内部的像素应用效果(例如去饱和度)。

谁能告诉我如何将效果限制在多边形内部的像素上?加载图像并绘制多边形不是问题

4

1 回答 1

0

假设以下情况:

  • 要应用效果的图片占据整个屏幕
  • 图片是使用 opengl 渲染的,可能是通过一个简单的着色器,图片作为纹理传递

您可以执行以下方法:

  • 将屏幕视为一个大纹理
  • 您绘制一个多边形,它将在渲染纹理的顶部渲染
  • 在多边形的顶点内插入 uv 对应于屏幕上的 2D 坐标(因此从屏幕空间到 uv 空间 (0 , 1 ) )
  • 正常画图
  • 在图片顶部使用与纹理相同的图片绘制多边形,但使用不同的着色器

因此,与其尝试对图片中的特定区域进行去饱和,不如在该区域顶部创建一个具有相同图片的多边形,并对新多边形进行去饱和处理。

这将帮助您避免模板缓冲区。

另一种方法是创建多边形,但只在模板缓冲区上绘制它,然后再绘制图片。

于 2014-10-27T09:03:18.647 回答