locked
Varios problemas con las Texture2D RRS feed

  • Pregunta

  • ¡Hola a todos de nuevo!

    Tengo varios problemas (o preguntas) sobre las Texture2D.

    Mi primer problema es que quiero que una imagen cargue poco a poco. Para ello utilizo el tiempo de GameTime y, mientras pasa el tiempo, que vaya cargando. Hasta ahí todo normal, y para hacer eso manejo la transparencia del Color. Mi problema es el siguiente: si creo un color con color = new Color(255,255,255,50) la imagen me sale transparente, que es lo que yo quiero. En cambio, si declaro un entero llamado transparente, y da igual que lo inicialice a 0, a 50 o al valor que sea. El caso es que si pongo color = new Color(255,255,255,transparente), la imagen NO sale transparente, carga normal. ¿Cual puede ser el problema?

    Por último me gustaría saber cómo poner una imagen de fondo (es decir, tengo 3 DrawStrings y no quiero que la imagen lo tape, sino que esté al fondo de estos DrawStrings) y cómo quitar una imagen (a la hora de cargar una imagen, después quiero cargar otra, y no quiero que esté cargada una encima de otra. Sencillamente que Imagen1 se quite y cargue Imagen2. Me imaginé que podía ser con UnLoadContent(), pero no estoy seguro).

    Desde ya muchas gracias. ¡Un saludo!

    viernes, 9 de noviembre de 2012 11:36

Respuestas

  • Para las transparencias recuerda que xna 4.0 funciona con premultiplied alpha... usease que

        color = new Color(255,255,255,transparente)  -> color = new Color(255,255,255,255) * alpha    donde alpha vale [0..1]

    Y lo demás es cuestión de organizarse un poco... la más facil es que lo pintes en orden de atrás hacia adelante, que es lo más fácil.

    Tb puedes mirarte como funciona el SpriteSortMode.BackToFront  -> http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritesortmode.aspx


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta V_Light sábado, 10 de noviembre de 2012 9:36
    viernes, 9 de noviembre de 2012 13:53
  • Umm.... con no pintarla es suficiente... no necesitas descargarla...ni quitarla del juego ni borrarla... simplemente no la pintes... y no se verá... :)

    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta V_Light sábado, 10 de noviembre de 2012 9:36
    sábado, 10 de noviembre de 2012 2:26

Todas las respuestas

  • Para las transparencias recuerda que xna 4.0 funciona con premultiplied alpha... usease que

        color = new Color(255,255,255,transparente)  -> color = new Color(255,255,255,255) * alpha    donde alpha vale [0..1]

    Y lo demás es cuestión de organizarse un poco... la más facil es que lo pintes en orden de atrás hacia adelante, que es lo más fácil.

    Tb puedes mirarte como funciona el SpriteSortMode.BackToFront  -> http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritesortmode.aspx


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta V_Light sábado, 10 de noviembre de 2012 9:36
    viernes, 9 de noviembre de 2012 13:53
  • A esas dos cuestiones les encontré solución (¡muchas gracias!). Era el orden de cargar las imágenes y, en vez de manejar un int, manejaba una variable de tipo color al que accedía a A.

    Solo me falta por saber el "borrar" o no dibujar una imagen después de cargarla. Quiero que se muestre tres o 4 imágenes, una por una, y me imagino que, a la hora de cargar una imagen, debo de cargar la otra y borrar el cargar de la anterior, o algo similar (no se si me explico...) porque, me imagino que si las dejo cargadas una por encima de la otra, el rendimiento del juego será menor, por eso quiero "borrarlas" cuando ya no hagan falta mostrarse...

    Solo me falta esto último. Muchas gracias, en serio. ¡Un saludo!

    viernes, 9 de noviembre de 2012 17:38
  • Hasta donde yo sé cargar una imagen y dibujarla son dos cosas distintas...

    Cargalas todas y dibuja las que quieras... y no te compliques... :)


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    viernes, 9 de noviembre de 2012 23:37
  • Perdón, me expresé mal jaja.

    Cuando dije "cargar" quería referirme a "dibujar". Tengo 4 imágenes cargadas y, a la hora de dibujarlas, quiero que me muestre 1, desaparezca y después me dibuje la siguiente. Ese "desaparezca" me refiero a borrar la imagen, quitarla del juego, y no poner una imagen encima de otra, porque me imagino que eso ralentiza el juego.

    ¡Un saludo, muchas gracias!

    viernes, 9 de noviembre de 2012 23:53
  • Umm.... con no pintarla es suficiente... no necesitas descargarla...ni quitarla del juego ni borrarla... simplemente no la pintes... y no se verá... :)

    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta V_Light sábado, 10 de noviembre de 2012 9:36
    sábado, 10 de noviembre de 2012 2:26
  • Está bien, se tendrá en cuenta así.

    Muchas gracias por contestar, en serio. ¡Un saludo!

    sábado, 10 de noviembre de 2012 9:36