【问题标题】:c++ opengGL: Draw polygon + image processing interior pixelsc++ opengL:绘制多边形+图像处理内部像素
【发布时间】:2014-10-27 03:03:58
【问题描述】:

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

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

【问题讨论】:

  • 模板缓冲区不起作用?

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


【解决方案1】:

假设如下情况:

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

您可以采取以下方法:

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

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

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

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

【讨论】:

  • 这是一张我想做的照片。我正在使用 OPENGL 和 C++。我已经完成了模糊效果,但我想将其限制在我的选择范围内。示例:postimg.org/image/8e83s4v05
  • 上述方法解决了您的问题。只需使用不同的 UV 在图片顶部渲染一个新多边形以匹配选择位置。新的多边形,用模糊着色器渲染它。
  • 我明白了。如果多边形是超过 4 个顶点的形状,这种方法会起作用吗?像这样postimg.org/image/voadbmbjp 和谢谢!!
  • 无论多边形的形状或顶点数如何,此方法都将起作用。您只需将正确的 uvs 分配给顶点(和位置 ofc )。还要记住,顶点的顺序是为了确定三角形的法线。我建议您通过在黑色背景上渲染红色多边形来快速测试多边形生成。
  • 这是我得到的输出。缩放的图像是我绘制的多边形postimg.org/image/iseohi5it 应该被裁剪而不是缩放。谁能给我一个教程来获取特定纹理区域的 UV 以应用模糊效果?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多