Opengl es 在OpenGLes 1.1中设置边界形状?
基本上,我试图用OpenGL制作一个分层系统,它必须支持层层次结构(层可以有子层等等)。当图层具有父图层时,绘制时必须将其剪裁到其父图层。当所有层都是矩形时,它是相当直接的,我可以计算出交叉点并裁剪出超出边界的位。然而,每一层也可以有一个变换矩阵,如果我们在另一层中变换一层,它将不再是矩形,这意味着我不能计算出交点 下图显示了问题(父项为粉红色,子项为浅绿色): 对于上面的示例,一个Opengl es 在OpenGLes 1.1中设置边界形状?,opengl-es,3d,geometry,Opengl Es,3d,Geometry,基本上,我试图用OpenGL制作一个分层系统,它必须支持层层次结构(层可以有子层等等)。当图层具有父图层时,绘制时必须将其剪裁到其父图层。当所有层都是矩形时,它是相当直接的,我可以计算出交叉点并裁剪出超出边界的位。然而,每一层也可以有一个变换矩阵,如果我们在另一层中变换一层,它将不再是矩形,这意味着我不能计算出交点 下图显示了问题(父项为粉红色,子项为浅绿色): 对于上面的示例,一个glScissor调用足以设置一个矩形边界框,但这不起作用,因为父层也可以变换(因此不再是矩形)。此外,如果父层
glScissor
调用足以设置一个矩形边界框,但这不起作用,因为父层也可以变换(因此不再是矩形)。此外,如果父层被变换,则在渲染子层之前,子层的变换矩阵将乘以父层的变换矩阵,因此即使在变换时,也会产生子层位于父层内部的错觉。一些建议:
- 自己剪裁子层的几何图形(快速,但需要进行数学运算)
- 将每个层渲染为纹理(灵活但对于许多层来说速度较慢)
- 使用模具缓冲区(多层填充率密集型)