6

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

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

我有个主意...

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

你认为它可以工作吗?这是一个好主意还是有更好的主意?

4

1 回答 1

2

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

OpenGL 裁剪

于 2012-10-23T16:10:36.387 回答