如何用另一个四边形遮罩OpenGL四边形

如何用另一个四边形遮罩OpenGL四边形,opengl,mask,Opengl,Mask,我试图使显示器成为一个四边形,但只有当它位于另一个四边形上方时,我才知道它的位置。我曾考虑过将该四边形用作另一个四边形的遮罩,但我不确定该如何做(我已经找到了关于遮罩的帖子,但在我的例子中,我没有遮罩纹理;我只知道要遮罩区域的X、Y、宽度和高度)。我找到的当前解决方案是使用glBlendFunc,只有在不渲染任何内容的情况下,它才能工作,以后不会出现这种情况 glBlendFunc(GL_一,GL_零); //绘制作为遮罩的背景四边形。。。 glBlendFuncSeparate(GL_ZERO

我试图使显示器成为一个四边形,但只有当它位于另一个四边形上方时,我才知道它的位置。我曾考虑过将该四边形用作另一个四边形的遮罩,但我不确定该如何做(我已经找到了关于遮罩的帖子,但在我的例子中,我没有遮罩纹理;我只知道要遮罩区域的X、Y、宽度和高度)。我找到的当前解决方案是使用
glBlendFunc
,只有在不渲染任何内容的情况下,它才能工作,以后不会出现这种情况

glBlendFunc(GL_一,GL_零);
//绘制作为遮罩的背景四边形。。。
glBlendFuncSeparate(GL_ZERO,GL_ONE,GL_SRC_ALPHA,GL_ZERO);
//再次绘制背景四边形,这次它将用作遮罩。。。
glBlendFunc(GL_DST_ALPHA,GL_ONE_减去GL_DST_ALPHA);
//绘制将被遮罩的四边形。。。
glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去GL_SRC_ALPHA);//这是用于其余渲染的混合函数
在绘制每个帧之前,我还有一个清除屏幕的功能:

glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glClearColor(0,0,0,0);

我怎样才能使之前绘制的内容只在上一个四边形上遮罩?

如果要将渲染限制为矩形区域,则可以使用 必须启用剪刀测试()并且可以通过设置矩形区域。e、 g:

glEnable(GL_SCISSOR_TEST);
glScissor(x, w, width, height);