基本上,我正在尝试使用 OpenGL|es 制作一个分层系统,该系统必须支持层层次结构(层可以有子层等等)。当图层有父图层时,必须在绘制时将其剪辑到其父图层。当所有层都是矩形时,它是相当直接的,我可以计算出交叉点并裁剪出越界位。但是,每一层也可以有一个变换矩阵,如果我们在另一层中变换一个层,它将不再是矩形,这意味着我不能只计算交叉点。
下图显示了问题(父母为粉红色,而孩子为浅绿色):
对于上面的示例,glScissor
调用就足以设置一个矩形边界框,但这不会这样做,因为父层也可以转换(因此它将不再是矩形)。此外,如果父层被变换,子层的变换矩阵会在子层被渲染之前乘以父层,因此即使在子层被变换时也会产生子层在父层内部的错觉。