1

基本上,我正在尝试使用 OpenGL|es 制作一个分层系统,该系统必须支持层层次结构(层可以有子层等等)。当图层有父图层时,必须在绘制时将其剪辑到其父图层。当所有层都是矩形时,它是相当直接的,我可以计算出交叉点并裁剪出越界位。但是,每一层也可以有一个变换矩阵,如果我们在另一层中变换一个层,它将不再是矩形,这意味着我不能只计算交叉点。

下图显示了问题(父母为粉红色,而孩子为浅绿色):

问题

对于上面的示例,glScissor调用就足以设置一个矩形边界框,但这不会这样做,因为父层也可以转换(因此它将不再是矩形)。此外,如果父层被变换,子层的变换矩阵会在子层被渲染之前乘以父层,因此即使在子层被变换时也会产生子层在父层内部的错觉。

4

1 回答 1

0

几点建议:

  • 自己剪裁子层的几何图形(速度很快,但你需要做数学)。
  • 将每一层渲染成一个纹理(灵活但多层慢)。
  • 使用模板缓冲区(填充率密集,层数较多)。
于 2012-08-30T23:22:25.657 回答