web-dev-qa-db-ja.com

libgdx SpriteBatchがテクスチャにレンダリング

LibGdx(Android /デスクトップ用のJavaエンジン)でSpriteBatchを使用してテクスチャーにレンダリングすることは可能ですか?もしそうなら、それはどうですか?

基本的に私はすべてを512 x 256テクスチャの320 x 240領域にレンダリングし、画面に合わせて領域を拡大縮小したい(横長モード)。この方法で、アルファブレンドテクスチャを個別にスケーリングしたときに発生するアーティファクトを排除したいと考えています。そのようなアーティファクトを削除する他の方法がある場合は、それらを指摘してください:)

また、libGdxのオンラインドキュメントはありますか?

36
PiotrK

このスニペットは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();
    }   
}
64
PiotrK

現時点では、Pixmapsを使用することをお勧めします。わかりますが、それらのために書かれた関数は多くありませんが、明らかにあなたがしたくない場合は、Pixmap(アルファチャネル付き)を別の関数(pm1.drawPixmap(pm2, srcx, srcy, w, h, ...))に書き込むことができます。拡大縮小します(後でコンポジションを拡大縮小できますが、コンポジションで使用される画像のサイズは変更されません...サイズ変更関数を作成しない限り)。

より複雑なことをしたい場合(BitmapFontを使用して文字列をTextureに書き込んで後で操作したり、Pixmapに書き込んでから、ビデオメモリ)、次に...あなたが成功したかどうかを教えてください(最適化のためにその方向に行きたいので)。 libgdx...に必要な関数を追加するのが最善だと思います.

とにかく、ここで私が書いたものは否定できない真実として受け取らないでください。さらに進んだ場合は、更新します。

ドキュメントが多少制限されている-すでにお読みになっていると思います。 badlogicのブログとgooglecodeプロジェクトページに情報があります。また、マリオによって書かれた比較的優れた本「Beginning Android Games」もあります。また、いくつかの(非常に基本的な)ビデオがあります。そして、ソースと美しい例を参照できることを忘れないでください...

また、いつでもフォーラムで質問することができます: http://badlogicgames.com/forum/

[〜#〜] update [〜#〜]FrameBufferおよびTextureRegionを使用した回答は間違いなく多くありますより良い。ドキュメントについて言及しているからといって、これはそのままにしておきます。

3
huff