android - libgdx SpriteBatch renderizado a textura
opengl-es (2)
Este fragmento me fue dado en el foro de LibGDX y funciona sin problemas.
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();
}
}
¿Es posible renderizar texturas usando SpriteBatch en libGdx (motor Java para Android / Desktop)? Si es así, ¿cómo?
Básicamente quiero renderizar todo en una región de 320 x 240 de una textura de 512 x 256 y en una región de escala para adaptarla a la pantalla (en modo horizontal). De esta forma, quiero eliminar los artefactos que ocurren cuando escalo las texturas alfa combinadas de forma independiente. Si hay alguna otra forma de eliminar dichos artefactos, indíquelos :)
¿Y hay alguna documentación en línea para libGdx?
Por el momento, te recomendaría usar Pixmap
s. Verá, no hay muchas funciones escritas para ellos, pero aparentemente puede escribir un Pixmap
(con canal alfa) en otro ( pm1.drawPixmap(pm2, srcx, srcy, w, h, ...)
), siempre que no desea escalarlo (puede escalar la composición más tarde, pero la proporción de las imágenes utilizadas en la composición no se redimensionará ... a menos que escriba una función de cambio de tamaño).
Si quieres hacer cosas más complejas (como escribir una cadena usando un BitmapFont
en una Texture
para una manipulación posterior, o escribirla en un Pixmap
y luego subirla a la memoria de video), entonces ... entonces dime si tienes éxito ( ya que quiero ir en esa dirección para optimizar). Creo que lo mejor sería agregar las funciones necesarias a libgdx ...
De todos modos, no tome nada de lo que escribí aquí como una verdad innegable: si voy más allá, lo actualizaré.
La documentación que encontré es algo limitada, estoy seguro de que ya la has examinado. Hay información en el blog de badlogic y en la página del proyecto de googlecode, y también hay un libro relativamente bueno escrito por Mario, "Beginning Android Games". Además, hay algunos videos (muy básicos). Y no olvide que puede consultar la fuente y los bellos ejemplos ...
Además, siempre puedes preguntar en el foro: http://badlogicgames.com/forum/
ACTUALIZACIÓN : Su respuesta usando FrameBuffer
y TextureRegion
es innegablemente mucho mejor. Dejo este solo porque menciona la documentación.