2014-10-27 154 views
0

我使用opengl和C++做图像处理。这个想法很简单,我将加载一个图像,通过点击绘制一个多边形,然后将一个效果(例如去饱和)仅应用到刚刚创建的多边形内部的像素。C++ opengGL:绘制多边形+图像处理内部像素

任何人都可以给我任何方向如何限制多边形的内部像素的影响?加载图像,并绘制多边形是没有问题的

+0

模板缓冲区不工作? – genpfault 2014-10-27 03:28:47

回答

0

假设以下情况:

  • 要在其上应用效果图以全屏幕
  • 图片使用的OpenGL渲染,可能是通过一个简单的着色器,以作为纹理

你可以做下面的办法通过图片:

  • 考虑屏幕作为一个大的质感
  • 你画一个多边形,这将在渲染纹理
  • 多边形的顶点内的顶部呈现插入紫外线的coresponding到二维坐标在屏幕上(所以从屏幕空间UV空间(0,1))
  • 画出来normaly
  • 上的图像的顶部使用相同的图片纹理绘制您的多边形,但有不同的着色器

所以不是试图破坏一个特定的从你的照片中创建一个多边形区域,用相同的图片在该区域的顶部创建一个多边形,然后使这个新的多边形去饱和。

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

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

+0

这是我想要做的事情的照片。我正在使用OPENGL和C++。我已经完成了模糊效果,但是我想将其限制为我的选择。示例:http://postimg.org/image/8e83s4v05/ – jeyCaldone 2014-11-11 21:57:13

+0

上面的方法解决了您的问题。只需使用不同的UV在图片顶部渲染一个新的多边形以匹配选择位置。新的多边形,使用模糊着色器进行渲染。 – MichaelCMS 2014-11-12 18:11:45

+0

我明白了。如果多边形是多于4个顶点的形状,此方法是否可行?像这样http://postimg.org/image/voadbmbjp/和感谢! – jeyCaldone 2014-11-14 21:31:52