c++opengGL:绘制多边形+图像处理内部像素



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

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

假设以下情况:

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

你可以做以下方法:

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

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

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

另一种方法是创建多边形,但在绘制图片之前,只在模具缓冲区上绘制。

最新更新