Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Danielo515 on October 24, 2010, 01:58:38 PM

Title: Primitivas gráficas, borrarlas, si, no y como
Post by: Danielo515 on October 24, 2010, 01:58:38 PM
Buenas a todos. El otro día me puse con un proyecto de lo mas tonto pero me ha picado, ASI que me he puesto a sacarlo adelante. Bueno al grano, el caso es que hago un uso intensivo de las primitivas gráficas para dibujar en mapas. El casi es que no se si es necesario cuando las uso para pintar, por ejemplo en el gráfico de un disparo ( previamente creado co new graph) si luego debo borrarlas y como. Normalmente después de usar unas cuantas hago un delete(0) y arreando. El problema es cuando varios procesos dibujan, no se si unos se pisan a otros, si eso daría error de accesos o que. Que alguien me ilustre por favor. Graaacias
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Drumpi on October 24, 2010, 07:11:44 PM
Si no recuerdo mal, cada vez que haces un draw_* te devuelve el ID de dicha primitiva, que puedes usar luego para moverla (MOVE_DRAW) o borrarla (DELETE_DRAW). Para la segunda función, supongo que con 0 se borran todas las primitivas.
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Windgate on October 25, 2010, 08:45:12 AM
Quote from: Drumpi on October 24, 2010, 07:11:44 PM
Si no recuerdo mal, cada vez que haces un draw_* te devuelve el ID de dicha primitiva, que puedes usar luego para moverla (MOVE_DRAW) o borrarla (DELETE_DRAW). Para la segunda función, supongo que con 0 se borran todas las primitivas.

Eso mismo
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Danielo515 on October 25, 2010, 12:39:38 PM
Vale, a ver si me explico mejor.

Se como usar las primitivas, no hay más que mirar el wiki para saber como se usa cada función. Pero una cosa es saber usar las funciones y otra es saber en que situaciones sí, en cuales no y cuales son sus consecuencias.

Imaginemos que yo hago varios procesos, y que "nacen" cuatro seguidos, y que cada uno hace uso de primitivas graficas solo para crear su gráfico. ¿Es posible que alguno haga un delete draw mientras otro esta usando un draw y eso de lugar a errores?

Si no borro las primitivas, ¿llega un momento en que da un error como el de demasiados textos o se empiezan a sobreescribir?

Esos son los detallitos que me hacen falta.

Muchas gracias de todos modos.
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Windgate on October 25, 2010, 07:41:45 PM
QuoteImaginemos que yo hago varios procesos, y que "nacen" cuatro seguidos, y que cada uno hace uso de primitivas graficas solo para crear su gráfico. ¿Es posible que alguno haga un delete draw mientras otro esta usando un draw y eso de lugar a errores?

A eso respondo que no, cada proceso puede tener prioridad distinta, pero se resuelve todo su ciclo hasta FRAME sin ser interrumpido por los demás.

A las demás preguntas yo también dudo, a ver qué nos dicen xD
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Drumpi on October 25, 2010, 11:07:33 PM
En principio no debe haber problemas con las primitivas gráficas, pero todo es ponerse y probarlo (255 primitivas se pintan en 5 segundos). La demo de Fenix no se cerraba por ese motivo.

Respecto a conflictos entre procesos, olvídate: una primitiva es como un proceso nuevo pero sin código ni variables locales. Lo más que puede pasar es que un proceso se ejecute más tarde que otro y su primitiva "tape" a la anterior, o que intentes mover o borrar una primitiva que ya no existe (y eso sí puede dar un error grave y cerrarse el programa sin decir el error).
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: SplinterGU on October 26, 2010, 12:51:42 AM
leo ahi la palabra "cerrar", el bug en las primitivas se soluciona en la version que estoy liberando, ya fue corregido hace 1 o 2 meses.
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Danielo515 on October 26, 2010, 04:01:35 PM
Splinter, no alcanzo a entender lo que quieres decir. ILUMÍNANOS!
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: SplinterGU on October 26, 2010, 04:50:30 PM
que pruebes la nueva version.
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: Drumpi on October 26, 2010, 07:02:28 PM
Quote from: SplinterGU on October 26, 2010, 12:51:42 AM
leo ahi la palabra "cerrar", el bug en las primitivas se soluciona en la version que estoy liberando, ya fue corregido hace 1 o 2 meses.

Si es lo que yo digo, más que un bug, es una feature normal: si accedes a una dirección de memoria que no existe mediante un puntero, es normal que se cierre. Vale que puede ser menos brusco o dar un aviso, pero es lo que hay, el PC no es un ser inteligente.
Es como intentar detener un scroll que no se ha iniciado, que también se cerraba el programa (creo que el fallo que tuve hace tiempo era ese).
No son bugs, son errores graves de programación, un defecto en el manejo de recursos.
Title: Re: Primitivas gráficas, borrarlas, si, no y como
Post by: SplinterGU on October 26, 2010, 09:03:49 PM
un error de programacion es un bug, y mas si es grave... pero hay veces que esos errores son por acceder a direcciones que salen de calculos complejos, y otra es hacerlo directo sin un calculo o por no inicializar una variable, como sea, esos son bugs.

prueben con la ultima version y despues comentan si sigue comportandose mal.