Forzar redibujado completo

Started by josebita, December 14, 2011, 02:17:08 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

¿Splinter, cómo puedo forzar un redibujado completo de la pantalla desde un módulo?

SplinterGU

para 1 solo frame o todo el tiempo?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Un solo frame, estoy cambiando el GLODWORD(librender, restore_type) y GLODWORD(librender, dump_type) y llamando a gr_draw_frame() (y luego dejando las globales como estaban, claro) pero parece que la librender no está pensada para hacer eso a mano...
¿Es esa la forma correcta?

SplinterGU

por que decis que no esta pensada para hacer eso?

con eso no vas a forzar el dibujado en ese frame, sino que vas a hacer un dibujado (y luego se hara el dibujado del frame, aunque no se dibujaran los objetos ya dibujados)

otra opcion mas reducida, pero solo funciona si tenes background, seria poner esta linea de codigo en tu modulo/funcion.

if ( background ) background->modified = 1 ;

con eso forzas el dibujado del background y por consiguiente de todos los objetos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 14, 2011, 02:55:16 AM
por que decis que no esta pensada para hacer eso?
Porque debo incluir un:
#define __LIB_RENDER en mis cabeceras o no funciona...

Y ok, gracias por la info de lo otro, veré a ver si me vale. Es porque en iOS según el evento que me llegue de SDL a veces hay que forzar el redibujado de la pantalla o ésta se queda congelada...

SplinterGU

eso es raro, me suena raro que con redibujar se solucione.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 14, 2011, 03:13:05 AM
eso es raro, me suena raro que con redibujar se solucione.
El tema es que cuando ocurre algún evento relacionado con el gestor de ventanas (se ha restaurado la ventana, o lo que sea) la superficie screen deja de representar ña superficie de la pantalla. No sé exactamente por qué pero parece alguna historia con SDL1.3, preguntaré en los foros de SDL a ver qué ocurre.
En todo caso, debo obtener la nueva superficie y forzar el redibujado en ella para que el usuario no se entere.