• No se han encontrado resultados

Tema 10. Interacción

N/A
N/A
Protected

Academic year: 2021

Share "Tema 10. Interacción"

Copied!
8
0
0

Texto completo

(1)

Tema 10: Interacci´

on

J. Ribelles

SIE020: S´ıntesis de Imagen y Animaci´

on

Institute of New Imaging Technologies, Universitat Jaume I

(2)

Contenido

1

Introducci´

on

2

Eventos

3

Men´

us

(3)

Introducci´

on

Introducci´

on

La captura y el manejo de eventos es esencial para crear aplicaciones

interactivas.

OpenGL no proporciona ninguna herramienta que nos permita

capturar eventos.

Pero la librer´ıa FreeGLUT si.

Y tambi´

en crear men´

us desplegables.

(4)

Eventos

Descripci´

on

Una de las finalidades de la librer´ıa FreeGLUT es precisamente dar

ese soporte.

Funciones relacionadas con los eventos de teclado:

void glutKeyboardFunc(void(*f )(unsigned char tecla,int x , int y ));

void glutSpecialFunc(void (*f )(int tecla, int x , int y ));

Funciones relacionadas con los eventos del rat´

on:

void glutMouseFunc(void (*f )(int boton, int estado, int x , int y ));

void glutMotionFunc(void (*f )(int x , int y ));

Funciones relacionadas con los eventos de ventana:

(5)

Men´

us

// C r e a un submenu idSubmenu = g l u t C r e a t e M e n u ( menu ) ; // L a s o p c i o n e s d e l submenu g l u t A d d M e n u E n t r y ( ” A l z a d o ” , 2 ) ; g l u t A d d M e n u E n t r y ( ” P l a n t a ” , 3 ) ; g l u t A d d M e n u E n t r y ( ” P e r f i l ” , 4 ) ; // C r e a e l menu p r i n c i p a l idMenu = g l u t C r e a t e M e n u ( menu ) ; // C r e a l a s e n t r a d a s g l u t A d d M e n u E n t r y ( ” P e r s p e c t i v a ” , 1 ) ; glutAddSubMenu ( ” P a r a l e l a ” , idSubmenu ) ; g l u t A d d M e n u E n t r y ( ” S a l i r ” , 0 ) ; // A s o c i a e l menu a l b o t o n d e r e c h o g l u t A t t a c h M e n u ( GLUT RIGHT BUTTON ) ;

(6)

Selecci´

on

Descripci´

on

¿C´

omo se˜

nalar objetos de la escena y que por tanto la aplicaci´

on

pueda saber qu´

e objeto se ha se˜

nalado?

Una forma de dar soporte a la selecci´

on de objetos con OpenGL es

crear un nuevo objeto framebuffer.

Consiste en dibujar la misma escena pero en el nuevo objeto

framebuffer y con una salvedad, los objetos seleccionables se

pintar´

an con colores planos y diferentes entre s´ı.

Despu´

es, utlizando las coordenadas de ventana proporcionadas por

la FreeGLUT tras el click realizado por el usuario, se leer´

a el color de

dicho p´ıxel y as´ı sabremos de qu´

e objeto se trata.

(7)

Creaci´

on de un objeto framebuffer

enum {C o l o r , Depth , N u m R e n d e r b u f f e r s }; G L u i n t f r a m e b u f f e r , r e n d e r b u f f e r [ N u m R e n d e r b u f f e r s ] ; // r e c i b e como p a r a m e t r o s e l a n c h o y e l a l t o d e l f r a m e b u f f e r v o i d i n i t F r a m e B u f f e r ( i n t ancho , i n t a l t o ) { // s e c r e a n d o s b u f f e r s g l G e n R e n d e r b u f f e r s ( N u m R e n d e r b u f f e r s , r e n d e r b u f f e r ) ; // uno a l m a c e n a r a e l c o l o r g l B i n d R e n d e r b u f f e r ( GL RENDERBUFFER , r e n d e r b u f f e r [ C o l o r ] ) ; g l R e n d e r b u f f e r S t o r a g e ( GL RENDERBUFFER , GL RGBA , ancho , a l t o ) ; // e s t e o t r o a l m a c e n a r a l a p r o f u n d i d a d

g l B i n d R e n d e r b u f f e r ( GL RENDERBUFFER , r e n d e r b u f f e r [ Depth ] ) ;

g l R e n d e r b u f f e r S t o r a g e ( GL RENDERBUFFER , GL DEPTH COMPONENT24 , ancho , a l t o ) ; // a h o r a c r e a m o s e l f r a m e b u f f e r

g l G e n F r a m e b u f f e r s ( 1 , &f r a m e b u f f e r ) ;

g l B i n d F r a m e b u f f e r (GL DRAW FRAMEBUFFER , f r a m e b u f f e r ) ; // y l e a d j u d i c a m o s l o s d o s b u f f e r s c r e a d o s p r e v i a m e n t e

g l F r a m e b u f f e r R e n d e r b u f f e r (GL DRAW FRAMEBUFFER , GL COLOR ATTACHMENT0 , GL RENDERBUFFER , r e n d e r b u f f e r [ C o l o r ] ) ; g l F r a m e b u f f e r R e n d e r b u f f e r (GL DRAW FRAMEBUFFER , GL DEPTH ATTACHMENT ,

GL RENDERBUFFER , r e n d e r b u f f e r [ Depth ] ) ; g l E n a b l e ( GL DEPTH TEST ) ;

g l B i n d F r a m e b u f f e r (GL DRAW FRAMEBUFFER , 0 ) ; // de momento l o d e s a c t i v a m o s }

(8)

Dibujado en el objeto framebuffer

// r e c i b e como p a r a m e t r o s l a s c o o r d e n a d a s d e l p i x e l v o i d r e n d e r T o F r a m e b u f f e r ( i n t x , i n t y ) { // a c t i v a e l f r a m e b u f f e r p a r a d i b u j a r g l B i n d F r a m e b u f f e r (GL DRAW FRAMEBUFFER , f r a m e b u f f e r ) ; // d i b u j a l a e s c e n a u t i l i z a n d o c o l o r e s p l a n o s . . . // r e c u p e r a e l c o l o r d e l p i x e l s e l e c c i o n a d o // d e p e n d i e n d o d e l c o l o r l e i d o s a b r a s que o b j e t o // s e ha s e l e c c i o n a d o G L f l o a t p i x e l [ 4 ] ; g l B i n d F r a m e b u f f e r ( GL READ FRAMEBUFFER , f r a m e b u f f e r ) ; g l R e a d P i x e l s ( x , a l t o−y , 1 , 1 , GL RGBA , GL FLOAT , p i x e l ) ; // D e s a c t i v a de n u e v o e l f r a m e b u f f e r

g l B i n d F r a m e b u f f e r (GL DRAW FRAMEBUFFER , 0 ) ; }

Referencias

Documento similar

Las características del trabajo con grupos que se debería llevar a cabo en los Servicios Sociales de Atención Primaria (SSAP), en términos de variabilidad o estabilidad

El curso está dirigido a personas del sector construcción como: Egresados, Estudiantes en carrera, Maestros de obra, capataces, Arquitectos, Ingenieros y/o profesionales que

RIO URUGUAY: CAUDAL EN DISMINUCIÓN AÚN EN AGUAS MEDIAS Durante la última semana se registraron precipitaciones leves sobre el área de aporte al tramo inferior del río

32 necesidades del niño y adolescente mostrando diferentes resultados a favor de la salud en los diversos entornos, sin embargo, existe dos vacíos sobre el fenómeno: la

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

El objetivo de estas convocatorias es impulsar la puesta en marcha de proyectos orientados a la mejora de la calidad de la do- cencia por medio de la integración de las

Pero para dar cuenta tanto del poder que conforma la subjetividad como del poder que surge del mismo sujeto – es decir, para dar cuenta no sólo del poder sino también de

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones