1

我在 libgdx 中有一个非常简单的应用程序。它目前应该用粉红色的纹理覆盖一半的屏幕。它确实做到了,但是纹理在闪烁。基于我自己对主题的理解,以及这个线程: LibGDX blinking I need to enable double buffering。或者,写入我的缓冲区。问题是,要么我对 google 无能,要么很难找到任何关于如何在 libgdx 中操作缓冲区的信息。如果有人可以为我提供资源,解释如何操作缓冲区,以及如何创建缓冲区,如何将它们与当前显示交换等。我将非常感激。

编辑:在网上搜索了一些之后,我在 badlogic 论坛上找到了帖子,声称 libgdx 默认设置了双缓冲。问题是,它是如何工作的?缓冲区何时交换?

4

1 回答 1

2

Libgdx 默认启用双缓冲(它实际上是底层 OpenGL 基础设施的一部分,而不是 Libgdx)。我不认为 Libgdx 公开了对双缓冲的任何控制。有一些控件可以禁用 vsync,这可能会造成一些撕裂,但不太可能相关。

获得这种行为的更可能的方法是,如果您的render方法仅被调用一次。这将绘制到一个缓冲区中。然后,假设render已成为无操作,没有任何内容被绘制到另一个缓冲区中,它们被切换,没有任何内容被绘制到原始缓冲区中,它们被切换等等。这可能导致您看到的闪烁行为。

如果该猜测不涵盖它,您将不得不提供更多详细信息。你在哪个平台上运行?您是在运行稳定版本的 Libgdx 还是每晚构建的版本之一?您如何设置 libgdx 应用程序配置?你的render方法实际上是什么样的?

于 2013-04-13T16:58:30.203 回答