OpenGL 2D不是矩形区域裁剪

时间:2012-10-23 16:01:28

标签: opengl 2d shader clipping

我正在使用OpenGL编写自己的2D GUI库,我正处于一个容器控件的步骤,该容器控件可以包含图形元素(如圆角矩形或星形)和其他子控件...等等... 我尝试将子控件和图形元素的渲染剪辑到父控件中。因此,如果子控件溢出容器边框,则不会呈现它。

我的第一个想法是在搜索网页时发现它后使用“剪刀测试”。 但问题是我被限制为矩形剪辑,我希望能够将内容剪切成任意区域,如星形多边形。

我有个主意......

当它是绘制控件及其图形元素的时刻时,我会查看我的控件是否必须剪切其内容。如果是的话,我会在屏幕外纹理的黑色背景上用均匀的白色绘制它。然后我将它发送到着色器程序。 所以我使用我的着色器激活每个孩子(控件和图形元素)。 在这个片段着色器中,对于每个片段,我认为在前面传递的特殊纹理中查看相同的坐标。如果特殊纹理中的片段是白色的,我可以渲染这个片段,因为它位于可见区域。

你认为它能奏效吗?这是一个好主意还是有更好的主意?

1 个答案:

答案 0 :(得分:2)

根据您的需要,可以通过几种方式完成。渲染到纹理或模板缓冲区可能是最好的选择。此链接提供了更多信息,以帮助您入门:

OpenGL clipping