【问题标题】:OpenGL 2D not rectangular region clippingOpenGL 2D不是矩形区域裁剪
【发布时间】:2012-10-13 15:11:02
【问题描述】:

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

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

我有个主意……

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

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

【问题讨论】:

    标签: opengl 2d shader clipping


    【解决方案1】:

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

    OpenGL clipping

    【讨论】:

    • 您好,感谢您的回答。我继续阅读并看到了这个模板解决方案。我从来没有使用过这个,但我认为它比着色器解决方案更容易实现。
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 2015-10-18
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多