Tag: 模具缓冲区

OpenGL ES模板操作

在参考OpenGL文章中讨论的问题后,出现了一个新的问题。 我正在实现基于节点的2D场景图的裁剪。 每当剪辑框轴alignment,我正在使用像在OpenGL剪辑中提出的glScissor。 我已经成功实现了轴alignment框的节点裁剪。 事实certificate,每个节点必须与它的裁剪矩形的剪切矩形相交。 (对于与祖先的剪贴框重叠的兄弟姐妹,这是必要的)。 交叉非轴alignment矩形的机制必须使用模板缓冲区来实现。 我开始在OpenGL剪辑中实现所提出的解决scheme,但是在chidrens中存在剪辑反转与其祖先重叠的问题。 现在,模板剪裁只用一个剪辑框就完美了。 但是,对于与祖先相交的小孩或大孩子来说,algorithm会失败,因为这里需要包含2个矩形的交点(如轴alignment版本),而不是孩子的全矩形。 我已经想出了以下algorithm: 最上面的节点写入从计数器值1开始,并将其填充1的剪切矩形绘制到模板缓冲区中,并将其模板化testing的结果显示为1.每个同时具有剪裁的兄弟模型都会打开它的边界矩形,模板缓冲区,然后testing2等等。 现在,当一个兄弟剪裁matrix与一个祖先剪裁matrix重叠时,它们重叠的区域会被2s填充,在对2进行testing时给出完美剪辑。该algorithm可以扩展到最多255个嵌套剪辑节点。 这里是我的问题: 如何执行对模板缓冲区的渲染,而不是1s正在写入,每当执行渲染时,都将1s添加到当前模板缓冲区值。 这是我用来准备渲染到模板缓冲区的代码: glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, ref, mask); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); 我正在寻找一个设置,将通过ref的值而不是将ref写入缓冲区来增加模板缓冲区当前值。 有人可以帮我吗?