37

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

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

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

4

2 に答える 2

68

このスニペットは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();
    }   
}
于 2011-10-03T08:33:01.417 に答える
3

今のところ、Pixmapsを使用することをお勧めします。ご覧のとおり、それらのために記述された関数は多くありませんが、スケーリングしたくない場合は、Pixmap(アルファチャネルを使用して)別の関数()に書き込むことができます(後でコンポジションをスケーリングできますが、比率pm1.drawPixmap(pm2, srcx, srcy, w, h, ...)コンポジションで使用されている画像はサイズ変更されません...サイズ変更関数を作成しない限り)。

より複雑なことをしたい場合(後で操作するためにBitmapFontaを使用して文字列を書き込む、またはに書き込んでからビデオメモリにアップロードするなど)、成功したかどうかを教えてください(私が望むように)最適化するためにその方向に進みます)。必要な関数をlibgdxに追加するのが最善だと思います...TexturePixmap

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

私が見つけたドキュメントは多少制限されています-あなたはすでにそれを経験していると確信しています。badlogicのブログとgooglecodeプロジェクトページに情報があります。また、マリオが書いた比較的優れた本「BeginningAndroidGames」もあります。また、いくつかの(非常に基本的な)ビデオがあります。そして、あなたが情報源と美しい例を調べることができることを忘れないでください...

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

更新FrameBuffer:とを使用したあなたの答えTextureRegionは間違いなくはるかに優れています。ドキュメントに言及しているという理由だけで、これを残します。

于 2011-09-30T23:47:42.393 に答える