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

C++ OpenGL:绘制多边形+图像处理内像素 我用OpenGL和C++做图像处理。想法很简单,我将加载一个图像,通过单击绘制一个多边形,然后应用效果去饱和,例如,仅对刚刚创建的多边形形状内部的像素应用效果去饱和,c++,opengl,image-processing,draw,gldrawpixels,C++,Opengl,Image Processing,Draw,Gldrawpixels,有人能告诉我如何限制多边形内部像素的效果吗?加载图像并绘制多边形不是问题假设出现以下情况: 要应用效果的图片占据整个屏幕 图片是使用opengl渲染的,可能是通过一个简单的着色器,图片作为纹理传递 您可以采用以下方法: 认为屏幕是一个大的纹理 绘制多边形,该多边形将在渲染纹理的顶部进行渲染 在多边形的顶点内部插入uv与屏幕上的2D坐标对应的坐标,以便从屏幕空间到uv空间0、1 正常地画这幅画 在图片顶部,使用与纹理相同的图片绘制多边形,但使用不同的着色器 因此,与其尝试从图片中去除特定区域的饱和

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

假设出现以下情况:

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

认为屏幕是一个大的纹理 绘制多边形,该多边形将在渲染纹理的顶部进行渲染 在多边形的顶点内部插入uv与屏幕上的2D坐标对应的坐标,以便从屏幕空间到uv空间0、1 正常地画这幅画 在图片顶部,使用与纹理相同的图片绘制多边形,但使用不同的着色器 因此,与其尝试从图片中去除特定区域的饱和度,不如在具有相同图片的区域顶部创建一个多边形,然后去除新多边形的饱和度

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


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

模具缓冲区不工作?下面是我想做的一张图片。我使用OpenGL和C++。我已经完成了模糊效果,但我想将其限制在我的选择范围内。示例:上述方法解决了您的问题。只需使用不同的UV在图片顶部渲染一个新多边形,以匹配选择位置。新多边形,用模糊着色器渲染。我明白了。如果多边形的形状超过4个顶点,此方法是否有效?像这样的东西,谢谢!!无论多边形的形状或顶点数如何,此方法都有效。只需将正确的UV指定给C的顶点和位置。还请记住,顶点的顺序是用来确定三角形法线的。我建议您通过在黑色背景上渲染红色多边形来快速测试多边形生成。这是我得到的输出。缩放后的图像是我绘制的多边形,应该进行裁剪而不是缩放。有没有人能给我一个教程,让我获得应用模糊效果的特定纹理区域的UV?谢谢