在OpenGLes 1.1中设置边界形状?

时间:2012-08-30 23:16:07

标签: opengl-es 3d geometry

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

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

Issue

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

1 个答案:

答案 0 :(得分:0)

一些建议:

  • 自己剪辑子图层的几何图形(快速,但需要进行数学运算)。
  • 将每个图层渲染为纹理(柔性但很慢,有很多层)。
  • 使用模板缓冲区(多层填充率很高)。