【问题标题】:Real time screen recording in a LibGDX screenLibGDX 屏幕中的实时屏幕录制
【发布时间】:2022-01-31 13:53:42
【问题描述】:

简而言之,我正在做一个模拟,其中有一群可以互相看到的生物。我想要做到这一点的方法是捕获每个生物周围的区域并将其提供给它们的神经网络,并让它们进化以识别周围环境。我正在使用 LibGDX 进行编码,并且我不打算在每一帧都制作屏幕截图,因为我可以想象这已经是一个非常糟糕的主意。但是,问题是我不知道如何在不捕获整个屏幕的情况下将像素放入定义的正方形中,然后为每个生物挑选我想要的东西,这将导致 MASSIVE 滞后峰值,因为这些生物的区域将be in 是 2000x2000,因此有 1200 万个不同的值(400 万个 RGB 值)。

每个生物大约有 5 个像素(宽度和高度),所以我的想法是在它们周围给它们一个 16x16 的区域,这就是为什么迭代整个帧缓冲区不起作用的原因,它会毫无意义地迭代数百万个值在找到我要求的之前。

如果可能的话,我还需要能够在屏幕之外拍照(如在窗口边界之外的部分)。

我怎样才能做到这一点?我的目标是性能,但我不介意在多个帧甚至多线程之间分配负载。

【问题讨论】:

    标签: java computer-vision libgdx


    【解决方案1】:

    问题是您无法在帧缓冲区中查询像素。

    您可以从帧缓冲区捕获纹理,并且可以将纹理转换为像素图。 libgdx TextureRegion to Pixmap

    然后你可以getPixel(int x, int y) 对着像素图。

    不过,也许走另一条路会更好。

    从像素图开始,使用像素图,然后为每一帧将像素图转换为纹理并全屏渲染该纹理。这也消除了生物环境与屏幕分辨率匹配的需要(尽管您仍然可以这样设置)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多