Open GL - congelar pantalla en opengl

 
Vista:

congelar pantalla en opengl

Publicado por carlos (5 intervenciones) el 02/08/2006 05:00:11
hola como estan? necesitaria si alguien pudiera decirme como hago para frenar (congelar) el movimiento de una aplicacion en opengl con c++ y despues reanudarla. la idea seria que pulsando una tecla se frenara la trayectoria de un objeto y con otra tecla reanudar su movimiento. probe haciendolo con la funcion "getch()", pero para reanudarla tengo que activar la pantalla de consola, y quisiera poder hacer todo sin moverme de la pantalla grafica de opengl. desde ya muchisimas gracias. saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:congelar pantalla en opengl

Publicado por x (12 intervenciones) el 05/08/2006 18:59:43
mmm... pues k no seri asuficiente con una variable booleana que indique si renderizar o no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:congelar pantalla en opengl

Publicado por Nekro (3 intervenciones) el 22/09/2006 21:08:22
Que tal, respecto a tu problema, no se si sepas que le puedes incorporar a tus aplicaciones OpenGL un capturador de eventos para realizar las instrucciones correspondientes, asi que si quieres detener el flujo de movimiento mediante una tecla, puedes incorporar la función "glutSpecialFunc(ControlKeyB)" dentro de tu main, donde "ControlKeyB" es el nombre de la función que se ejecutará cuando se genere el evento de teclado y recibe como parámetros un "int key" representativo de la tecla, un "int x" y un "int y" que son las coordenadas del mouse en ese instante.
Como se que puede ser un poco dificil de entender, te dejo un pseudocódigo que espero que te sirva.

parar = false

dibuja_escena(){
if(!parar)
/* se modifican los valores de posicion de los objetos que forman la escena */
/* se dibuja la geometría de la escena */
}

ControlKeyB(int key, int x, int y){
if(GLUT_KEY_PAGE_UP) // Si se presionó la tecla de retroceso de página
parar = true
if(GLUT_KEY_PAGE_DOWN) // Si se presionó la tecla de avance de página
parar = false
}

main(){
/* instrucciones iniciales */
inicializar_ambiente()
glutDisplayFunc(dibuja_escena)
glutSpecialFunc(ControlKeyB)
glutMainLoop()
}

Espero que les sirva´.

*** Nekro...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar