2013-04-28 104 views
1

我正在渲染四维网格到OpenGL中的可能重叠四边形(更多片段放入单个帧缓冲区像素)中的屏幕外帧缓冲区。所有四边形都在y = 0的平面上。 我想知道是否有一种简单的方法将颜色(例如黑色)设置为具有重叠四边形的像素(最好不需要额外的着色器通道,使用简单的OpenGL功能)。清除重叠内容中的像素

+1

像素没有“重叠的四边形”。他们有一种颜色,没有什么更多。您可以将像素设置为任何想要的颜色。目前尚不清楚与“重叠四边形”有什么关系,因为再次,这不是像素存储。你能举一些例子吗? – 2013-04-28 01:27:00

回答

1

您可以使用模板缓存来算“透支”每像素的东西,如

glClear(GL_STENCIL_BUFFER_BIT)< 
glEnable(GL_STENCIL_TEST); 
glStencilOp(GL_KEEP, GL_INCR, GL_INCR); 
glStencilFunc(GL_ALWAYS, 0, 0xffffff); 

这只会清除模板缓存为0,并增加它每次你以后画片段(也对于您生成的所有片段,但未通过深度测试)。你画的所有的四边形后,你可以绘制所需的颜色另一全屏四,但模板测试设置为

glStencilFunc(GL_GREATER, 1, 0xffffff); 

只与一个以上的四影响的像素。 这仍然需要某种“额外通过”,但模板测试非常有效。

+1

我正在寻找这样的解决方案,谢谢!我必须将GL_GREATER更改为GL_LESS,以使模板> 1的碎片通过测试并覆盖颜色。 – Bolo 2013-04-28 13:50:38

+0

嗯,我不明白这可以与GL_LESS协同工作,但无论如何。 – derhass 2013-04-28 15:58:33

+0

http://www.opengl.org/sdk/docs/man/xhtml/glStencilFunc.xml说: GL_LESS 通过if(ref&mask)<(stencil&mask)。 – Bolo 2013-04-28 17:41:35