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

时间:2014-10-27 03:03:59

标签: c++ opengl image-processing draw gldrawpixels

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

任何人都可以给我任何关于如何限制多边形内部像素效果的方向吗?加载图像和绘制多边形不是问题

1 个答案:

答案 0 :(得分:0)

假设以下情况:

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

您可以采取以下方法:

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

因此,不要尝试从图片中去除特定区域的饱和度,而是使用相同的图片在该区域的顶部创建一个多边形,并对该新多边形进行去饱和。

这可以帮助您避免使用模板缓冲区。

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