Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dibujar con floats

Iniciado por vity3001, 20 de Enero de 2012, 03:40:21 PM

« anterior - próximo »

vity3001

Hola a todos, este es mi primera pregunta, asi que espero que no este contestada en otro sitio, si es asi, lo siento.

Os cuento, en la universidad estamos realizando un videojuego de estrategia y estamos utilizando XNA.
En el videojuego se ve un mapa del mundo entero y cada pais tiene guardadas sus coordenadas(flotantes) en un archivo externo xml.

Mi problema es el siguiente, en ciertos momentos he de dibujar y tengo que usar esas coordenadas flotantes, y el problema es que el metodo draw solo acepta como parametro Rectangle que se forma con int.

Se que se puede usar vector2 que acepta float, el problema es que lo que quiero es dibujar un sprite(en 2d) escalado y con coordenadas float, y eso no se si se puede y en caso de que se pueda, como hacerlo.

No se si me he explicado bien, pero aqui hay un resumen:
¿Como se dibuja un sprite2D esclado usando coordenadas float(por ejemplo dibujar todo el sprite en el punto 20.53,20.53 y de ancho y alto 100?

Muchas gracias por contestar mi duda

RendercodeGames

¿Qué problema te da redondear los flotantes a enteros? Son coordenadas de pixel al fin y al cabo.

RendercodeGames

... en todo caso puedes probar a usar esta versión de Draw que acepta la posición en flotante y a ver qué pasa:

http://msdn.microsoft.com/es-es/library/ff433988%28v=xnagamestudio.40%29.aspx

RendercodeGames

... y aquí discuten un caso similar:

http://forums.create.msdn.com/forums/t/30739.aspx

Resumiendo: si pintas en coordenadas fraccionales, la textura se verá borrosa.

vity3001

Vale, muchas gracias por contestar, probare el metodo draw con el parametro escala, aver si consigo dibujar algo.
Mi problema basicamente es que obtengo float y les tengo que hacer un casting a int, y este casting pierdo algo de precision que en algunos casos hace que se vea el fondo de la pantalla y queda algo feo, nada mas

RendercodeGames

No hagas casting de float a int, haz Math.Round mejor.

blau

Cita de: RendercodeGames en 21 de Enero de 2012, 04:52:50 PM
No hagas casting de float a int, haz Math.Round mejor.

¿Por que motivo?

Mars Attacks

Resultados más similares a los reales, aunque a costa de algo de rendimiento imagino.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.