Android libgdx SpriteBatch渲染到纹理

Android libgdx SpriteBatch渲染到纹理,android,opengl-es,libgdx,Android,Opengl Es,Libgdx,是否可以在libGdx(Android/Desktop的Java引擎)中使用SpriteBatch渲染到纹理?如果是,怎么做 基本上,我想渲染的512 x 256纹理的320 x 240区域,而不是缩放区域,以适应屏幕(在横向模式)。通过这种方式,我希望消除单独缩放alpha混合纹理时出现的瑕疵。如果有任何其他方法可以删除这些工件,请指出:) 还有libGdx的在线文档吗?目前,我建议您使用Pixmaps。你看,为它们编写的函数不多,但显然你可以将一个Pixmap(带有alpha通道)写入另一个

是否可以在libGdx(Android/Desktop的Java引擎)中使用SpriteBatch渲染到纹理?如果是,怎么做

基本上,我想渲染的512 x 256纹理的320 x 240区域,而不是缩放区域,以适应屏幕(在横向模式)。通过这种方式,我希望消除单独缩放alpha混合纹理时出现的瑕疵。如果有任何其他方法可以删除这些工件,请指出:)


还有libGdx的在线文档吗?

目前,我建议您使用
Pixmap
s。你看,为它们编写的函数不多,但显然你可以将一个
Pixmap
(带有alpha通道)写入另一个(
pm1.drawPixmap(pm2,srcx,srcy,w,h,…)
),只要你不想缩放它(您可以稍后缩放构图,但构图中使用的图片比例不会调整大小…除非您编写了调整大小功能)

如果你想做更复杂的事情(比如用
BitmapFont
将字符串写入
Texture
以备日后处理,或者将其写入
Pixmap
然后上传到视频内存),那么……然后告诉我你是否成功(因为我想朝这个方向进行优化).我认为最好是在libgdx中添加所需的函数

无论如何,不要把我在这里写的任何东西视为不可否认的事实——如果我再进一步,我会更新的

我发现的文档有点有限-我相信你已经看过了。badlogic的博客和googlecode项目页面中有相关信息-还有Mario写的一本相对不错的书《开始Android游戏》。还有一些(非常基本)视频。别忘了,你可以参考源代码和美丽的例子

此外,您也可以在论坛中询问:


更新:您使用
帧缓冲区
纹理区域
的回答无可否认要好得多。我留下这篇文章只是因为它提到了文档。

这篇文章是在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();
    }   
}

我对这样一个特性很感兴趣。不过,在浏览了“SpriteBatch”代码之后,我认为实现这样一个特性并不是件小事,而且还需要重新编译库。我在“Pixmap”(本机端)中添加了一些函数在过去,但这似乎更麻烦。为了保持纹理翻转,在帧缓冲区周围使用TextureRegion的目的在这里得到了很好的理解。新来者注意到。我在实现这一点时遇到了一些问题:如果我绘制spriteBatch,一切看起来都很好,但当我尝试在FBO中捕获东西时,我就有了FBO绘制之前渲染的所有内容时出现问题。有什么想法吗?啊,如果其他人遇到此问题,应该在FBO.begin()之后立即调用glClear。