libgdx SpriteBatch渲染到纹理

问题描述:

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

基本上我想渲染一切到512×256纹理的320×240区域,并且比缩放区域适合屏幕(在横向模式下)。这样我就可以消除独立缩放alpha混合纹理时发生的工件。如果还有其他方法可以删除这些文物,请将它们指出:)

是否有libGdx的在线文档?

+0

我对这样的功能感兴趣。然而,在对'SpriteBatch'代码进行了一番审视之后,我并不认为实现这样一个功能并不重要,而且还需要重新编译库。我在过去添加了一些功能给'Pixmap'(在本地),但这似乎更加困难。 – huff

这段代码是在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(); 
    } 
} 
+3

太好了,谢谢! – huff

+6

为了保持纹理翻转,使用包裹在帧缓冲区中的TextureRegion点在这里很受赞赏。新来者注意。 –

+0

我遇到了一些问题: http://i.gyazo.com/7329707597bf94974dfd76fc1f33285d.gif 如果我绘制我的spriteBatch,一切看起来都很好,但是当我尝试捕获FBO中的东西时,我遇到了问题与FBO绘制所有以前渲染的东西。有任何想法吗? – Daryl

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

如果你想要做更复杂的东西(比如写使用BitmapFont一个字符串转换为Texture为以后的操作,或将其写为Pixmap,然后将其上传到视频内存),然后...然后告诉我如果你成功了(因为我想进入这个方向进行优化)。我认为最好是将需要的功能添加到libgdx ...

反正,不带走任何东西,我写在这里作为一个不可否认的调查真相,如果我得到进一步的,我会更新。

文档我发现有点有限 - 我确定你已经经历了它。在badlogic的博客和googlecode项目页面中有信息 - 还有一本由Mario编写的“开始Android游戏”的书。此外,还有一些(非常基本的)视频。而且不要忘了,你可以参考源和美丽的例子...

此外,您可以随时在论坛上询问:http://badlogicgames.com/forum/

UPDATE:使用你的答案FrameBufferTextureRegion无疑是多少更好。我只是因为它提到了文档而留下了这个。