是否可以在 libGdx(Android/Desktop 的 Java 引擎)中使用 SpriteBatch 渲染到纹理?如果是这样,怎么做?
基本上我想将所有内容渲染到 512 x 256 纹理的 320 x 240 区域,然后缩放区域以适应屏幕(在横向模式下)。通过这种方式,我想消除在独立缩放 Alpha 混合纹理时发生的伪影。如果有任何其他方法可以删除此类工件,请指出:)
libGdx 是否有任何在线文档?
这个片段是在 LibGDX 论坛上给我的,它完美地工作。
private float m_fboScaler = 1.5f;
private boolean m_fboEnabled = true;
private FrameBuffer m_fbo = null;
private TextureRegion m_fboRegion = null;
public void render(SpriteBatch spriteBatch)
{
int width = Gdx.graphics.getWidth();
int height = Gdx.graphics.getHeight();
if(m_fboEnabled) // enable or disable the supersampling
{
if(m_fbo == null)
{
// m_fboScaler increase or decrease the antialiasing quality
m_fbo = new FrameBuffer(Format.RGB565, (int)(width * m_fboScaler), (int)(height * m_fboScaler), false);
m_fboRegion = new TextureRegion(m_fbo.getColorBufferTexture());
m_fboRegion.flip(false, true);
}
m_fbo.begin();
}
// this is the main render function
my_render_impl();
if(m_fbo != null)
{
m_fbo.end();
spriteBatch.begin();
spriteBatch.draw(m_fboRegion, 0, 0, width, height);
spriteBatch.end();
}
}
目前,我建议您使用Pixmap
s. 您会看到,为它们编写的函数并不多,但显然您可以将一个Pixmap
(带有 alpha 通道)写入另一个(pm1.drawPixmap(pm2, srcx, srcy, w, h, ...)
),前提是您不想缩放它(您可以稍后缩放合成,但比例合成中使用的图片不会调整大小...除非您编写调整大小功能)。
如果您想做更复杂的事情(例如使用 a 将字符串写入 aBitmapFont
以Texture
供以后操作,或者将其写入 aPixmap
然后将其上传到视频内存),那么...然后告诉我您是否成功(如我所愿朝着那个方向进行优化)。我认为最好的办法是将所需的功能添加到libgdx ...
无论如何,不要把我在这里写的任何东西当作不可否认的事实——如果我更进一步,我会更新。
我找到的文档有些有限——我相信你已经看过了。在 badlogic 的博客和 googlecode 项目页面中都有相关信息 - 还有一本 Mario 写的相对不错的书,“Beginning Android Games”。此外,还有一些(非常基本的)视频。并且不要忘记您可以查阅源代码和漂亮的示例...
另外,您可以随时在论坛中提问:http: //badlogicgames.com/forum/
更新FrameBuffer
:不可否认,您使用and的答案TextureRegion
要好得多。我留下这个只是因为它提到了文档。