是否可以使用libGdx中的SpriteBatch(用於Android/Desktop的Java引擎)渲染到紋理?如果是這樣,怎麼辦?libgdx SpriteBatch渲染到紋理
基本上我想渲染一切到512×256紋理的320×240區域,並且比縮放區域適合屏幕(在橫向模式下)。這樣我就可以消除獨立縮放alpha混合紋理時發生的工件。如果還有其他方法可以刪除這些文物,請將它們指出:)
是否有libGdx的在線文檔?
是否可以使用libGdx中的SpriteBatch(用於Android/Desktop的Java引擎)渲染到紋理?如果是這樣,怎麼辦?libgdx SpriteBatch渲染到紋理
基本上我想渲染一切到512×256紋理的320×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, ...)
),假設你不想縮放它(你可以稍後調整構圖,但在構圖中使用的圖片比例不會調整大小......除非您編寫調整大小功能)。
如果你想要做更復雜的東西(比如寫使用BitmapFont
一個字符串轉換爲Texture
爲以後的操作,或將其寫爲Pixmap
,然後將其上傳到視頻內存),然後...然後告訴我如果你成功了(因爲我想進入這個方向進行優化)。我認爲最好是將需要的功能添加到libgdx ...
反正,不帶走任何東西,我寫在這裏作爲一個不可否認的調查真相,如果我得到進一步的,我會更新。
該文檔我發現有點有限 - 我確定你已經經歷了它。在badlogic的博客和googlecode項目頁面中有信息 - 還有一本由Mario編寫的「開始Android遊戲」的書。此外,還有一些(非常基本的)視頻。而且不要忘了,你可以參考源和美麗的例子...
此外,您可以隨時在論壇上詢問:http://badlogicgames.com/forum/
UPDATE:使用你的答案FrameBuffer
和TextureRegion
無疑是多少更好。我只是因爲它提到了文檔而留下了這個。
我對這樣的功能感興趣。然而,在對'SpriteBatch'代碼進行了一番審視之後,我並不認爲實現這樣一個功能並不重要,而且還需要重新編譯庫。我在過去添加了一些功能給'Pixmap'(在本地),但這似乎更加困難。 – huff