如何在 libgdx 中重用帧缓冲纹理

Posted

技术标签:

【中文标题】如何在 libgdx 中重用帧缓冲纹理【英文标题】:How to reuse framebuffer texture in libgdx 【发布时间】:2014-02-25 09:14:33 【问题描述】:

是否有可能将帧缓冲区保存到纹理。这样我就可以重用帧缓冲区来创建新的纹理?

com.badlogic.gdx.graphics.glutils.FrameBuffer.getColorBufferTexture()

每次都会返回相同的纹理。

编辑:

我计算阴影,不想重新计算静态灯光。所以我想将静态灯光/阴影计算保存在纹理中。目前我必须为每个灯制作一个新的帧缓冲区来保存它们。那就是性能不佳。

【问题讨论】:

请提供更多信息。你到底想达到什么目的?您写道,您想重用与 Texture 相同的 FrameBuffer。但是然后你写“每次都会返回相同的纹理。”。这不是你想要的吗? 添加了更多信息。可以理解吗? 如果你开始/开始你的 FrameBuffer,渲染所有的灯光和阴影,然后结束 FrameBuffer 并调用com.badlogic.gdx.graphics.glutils.FrameBuffer.getColorBufferTexture(),这应该会给你一个光照贴图的Texture。这不工作吗? Y 它给出了一个纹理,但是当我计算下一个光时,前一个将被覆盖。帧缓冲区始终只使用一种纹理。 您将整个灯光/阴影写入一个帧缓冲区,然后调用getColorBufferTexture()。所以你有一个所有灯光的光照贴图。如果光线发生变化,您需要重新计算它,因此纹理也会发生变化。所以你只需要为所有的灯光使用 1 个纹理。 【参考方案1】:

您可以覆盖 FrameBuffer 类的 setupTexture 方法以提供不同的纹理对象。查看libgdx代码中setupTexture的默认实现。

【讨论】:

以上是关于如何在 libgdx 中重用帧缓冲纹理的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GLUT 在按键上的纹理/帧缓冲区之间切换?

如何在多采样纹理上渲染帧缓冲区对象?

纹理包装动画图像/精灵表有效-Libgdx

libGDX:FrameBuffer 大小限制 == 最大纹理大小?

(Java LibGDX) 如何在 LibGDX 中调整纹理的大小?

使用帧缓冲区将深度缓冲区渲染到纹理中