【问题标题】:Libgdx's ScreenUtils.getFrameBufferTexture() gets only pixels from certain 3D modelsLibgdx 的 ScreenUtils.getFrameBufferTexture() 仅从某些 3D 模型中获取像素
【发布时间】:2014-03-17 12:39:44
【问题描述】:

我正在尝试制作一个暂停屏幕,将 3D 场景的最后一帧渲染为纹理,在上面我将渲染一个带有半 alpha 和一些文本的黑色矩形。 我认为使用 ...

ScreenUtils.getFrameBufferTexture()

... 是最简单的选择,但是纹理缺少此属性的模型...

BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)

...在屏幕截图中根本不会呈现。

例子:

为什么会这样?

【问题讨论】:

  • 我认为黑色矩形过度绘制了Textures,没有添加混合,你想要什么。我认为您必须将此BlendingAttribute 设置为Material,但我是libgx 的新手,所以我不确定。无论如何,而不是使用getFrameBufferTexture(),您可以简单地在您的班级中持有int state,如果state == STATE_PAUSED 您只是不更新​​对象的位置、旋转...。所以你仍然可以渲染,就像游戏没有暂停一样,并用你的文本和黑色矩形覆盖它
  • 我删除了渲染矩形的代码,它一直在发生同样的事情。无论如何,我认为这是一个好方法,谢谢!我可以按照你说的来暂停游戏,但我想充分利用 libgdx 的屏幕。
  • 用我的方法不需要PauseScreen,我认为这不会更糟。在我看来,只有当您使用的视图和资源完全改变时,才需要使用Screen。在你的情况下,我不会使用另一个Screen。但那是你的选择(:另一个想法,我想到了:你用一些光/环境渲染场景吗?也许FrameBufferTexture 不关心它们?
  • 确保每晚更新到最新版本,有一个相关问题不久前已修复。
  • 好的,就是这样,解决了!经典技巧

标签: opengl 3d libgdx screenshot


【解决方案1】:

好的,这个问题已经在最新的 nightlies 中修复了。只需使用它们更新您的项目即可。

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 2016-03-31
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2015-10-28
    • 2020-03-19
    相关资源
    最近更新 更多