libgdx SpriteBatch渲染到纹理
是否可以使用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