La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK

Presentaciones similares


Presentación del tema: "OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK"— Transcripción de la presentación:

1 OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK http://www.sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones

2 OpenGLA. García-Alonso2 Antecedentes CORE Graphics standard (SIGGRAPH 1977) IGL-Plot 10 (Tektronix) –Interactive Graphic Library HP-GL “plotting language” (Hewlett Packard) –Hewlett Packard Graphic Language Starbase (Hewlett Packard) PHIGS (standard ANSI, ISO) –Programmer's Hierarchical Interactive Graphics System GKS, GKS-3D (standard ANSI, ISO) –Graphic Kernel System GL (Silicon Graphics)  OpenGL –Graphic Library

3 OpenGLA. García-Alonso3 Clasificar-distinguir “sistemas gráficos” Sintaxis y semántica de ficheros –Estándar (ISO, ANSI,...) : VRML, X3D –Estándar industrial “de facto standard” : DXF, 3ds, obj, … Librerías, APIs, Toolkits,... –OpenGL, Direct 3D(low level) –Java 3D(scene graph, nodes) –Open Inventor(scene graph, nodes) –Performer(large-scale visualization model) –[ Fahrenheit ](three levels) Motores

4 OpenGLA. García-Alonso4 Librerías en OpenGL Librería de funciones para generar imágenes a partir de modelos 3D, más otras librerías auxiliares –gl la librería OpenGL relacionada directamente con el H/W –glu librería de mayor nivel construida sobre OpenGL –glaux librería fuera de uso –glut librería para crear interfaces de usuario transportables (Linux, Windows) En Visual C++ falta (están en el web de la asignatura) –glut.dll  windows\system(32) –glut.lib  …\lib –glut.h  …\include\gl

5 OpenGLA. García-Alonso5 Entorno de programación Visual C++ (versión 6.0) Trabajamos en C, es decir sin crear clases de C++ Añadir las librerías opengl32.lib glu32.lib glut32.lib –Project : settings : link : Object/Library Modules Ficheros a incluir –#include –If you are using GLUT for managing your window manager #include Note that glut.h includes gl.h, glu.h, and glx.h automatically, so including all three files is redundant.

6 OpenGLA. García-Alonso6 Estados Máquina de estados –Color de fondo –Intensidad de luz –Material de dibujo –Luz encendida o apagada –etc Valor o estado –glColor*(), glGetFloatv() –glEnable(), glDisable(), glIsEnabled()

7 OpenGLA. García-Alonso7 Command syntax (functions) glVertex3fv(... ) –gl tells that this function belongs to the “gl” s/w package –3 is used to indicate three arguments –f is used to indicate that the arguments are floating point –v indicates that the arguments are in vector format Number Of Arguments: 2, 3, or 4 –Bi-dimensional version of the command –3D or rgb –Homogeneous coordinates or rgb+alpha Formats –absence of v indicates scalar format –v indicates vector format

8 OpenGLA. García-Alonso8 Tipos variables y constantes Las equivalencias más habituales aparecen en la tabla –Se recomienda definir los argumentos que se pasan a las funciones de OpenGL usando sus tipos predefinidos Para Glint unos sistemas pueden usar short, otros long Para Glfloat unos sistemas float otros double

9 OpenGLA. García-Alonso9 Constants & “defined names” Ejemplos : –#define GL_COLOR_BUFFER_BIT0x00004000 –#define GL_POINTS0x0000 –#define GL_LINE_LOOP0x0002 –#define GL_POLYGON0x0009 Defined names (for constants) –Begin with GL_ –Use all capital letters –Use underscores to separate words Operaciones “bitwise inclusive or operator” –glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE )

10 OpenGLA. García-Alonso10 Sistema gobernado por eventos Event (evento) : teclado, ratón, pasar por, etc. Callback : nombre, tipo, interfaz Bind : a callback to an event (asociar función y evento) Main( ) –Inicialización – Loop (bucle) dispatch events (proceso eventos) Post an event

11 OpenGLA. García-Alonso11 Ejemplo 010 : Dibuja 3 segmentos Cfr. OpenGLPrimer 010 –Dibuja tres líneas OpenGL functions and (concepts) –gl –glut Sistema gobernado por eventos : estructura “main” –Inicialización Creación ventana contenga el drawingarea de soporte Asociar función (callback) a un evento (teclado, ratón, etc.) Evento “drawingarea exposed” Ajustar algún estado de “gl” –Bucle proceso eventos

12 OpenGLA. García-Alonso12... (gl) pure "output", but lacks connection with display –glClear(command) –glClearColor(state) –glBegin glEnd –glVertex*(geometry) –glColor*(attribute, state) –glFlush, glFinish(command stack & processing) –(debbuging) –(aspect ratio) –(mapping from modelling coord. to display coordinates) –(need for a transformation management system)

13 OpenGLA. García-Alonso13... (glut) Window system independent management –“window” management glutInitDisplayModel( GLUT_RGB | GLUT_SINGLE ); glutInitWindowSize( WIDTH, HEIGHT ); glutInitWindowPosition ( 550, 350 ); glutCreateWindow(“Basic Draw"); –“input” : event handling similar to : The X Window system, MOTIF, MFF,... (event) void Display(void); (callback function) glutDisplayFunc( Display ); (binding event & callback) – void Display ( void ) glutMainLoop(); (dispatching events)

14 OpenGLA. García-Alonso14 Ejemplo 011 : Teclado Exit from an application Profundizar en el concepto de CallBack gl –glLineWidth glut –glutPostRedisplay() –glutKeyboardFunc( DoIt ) void DoIt (unsigned char key, int x, int y) DoIt puede tomar cualquier nombre Sin embargo, al declarar y definir la función, su tipo y el de sus parámetros debe ser forzosamente el que se indica

15 OpenGLA. García-Alonso15 Diferenciar estos tres métodos glutPostRedisplay posts glutDisplayFunc binds Display draws

16 OpenGLA. García-Alonso16 Primitivas GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON

17 OpenGLA. García-Alonso17... Otras primitivas disponibles (glu library) –Polígonos : cóncavos, múltiplemente conexos –Objetos (uso auxiliar, no para crear modelos) –Evaluators, NURBS, etc Vertex arrays (veremos después de los atributos) Display lists (veremos después de los atributos) Texto –No existe primitiva –Usar texturas, problema aliasing

18 OpenGLA. García-Alonso18 Atributos glPointSize(GLfloat) glLineWidth(GLfloat) glLineStipple(GLint factor, GLushort pattern) –glEnable( GL_LINE_STIPPLE ) glPolygonMode( face, mode ) –GL_FRONT GL_BACK GL_FRONT_AND_BACK –GL_POINT GL_LINE GL_FILL glPolygonStipple (enable)“transparency” glEdgeFlag*mode Line, splitted concave polygons glColor* glMaterial*

19 OpenGLA. García-Alonso19 Variables de estado Valor de defecto Valor actual Gestión en una aplicación o en un módulo reutilizable –Valor de defecto en una aplicación dada –Política de cambios de estado en un módulo de software glPushAttrib( ored mask ) / glPopAttrib() –Permiten salvar grupos de atributos

20 OpenGLA. García-Alonso20 GL_ACCUM_BUFFER_BITaccum-buffer GL_ALL_ATTRIB_BITS-- GL_COLOR_BUFFER_BITcolor-buffer GL_CURRENT_BITcurrent GL_DEPTH_BUFFER_BITdepth-buffer GL_ENABLE_BITenable GL_EVAL_BITeval GL_FOG_BITfog GL_HINT_BIThint GL_LIGHTING_BITlighting GL_LINE_BITline GL_LIST_BITlist GL_PIXEL_MODE_BITpixel GL_POINT_BITpoint GL_POLYGON_BITpolygon GL_POLYGON_STIPPLE_BITpolygon-stipple GL_SCISSOR_BITscissor GL_STENCIL_BUFFER_BITstencil-buffer GL_TEXTURE_BITtexture GL_TRANSFORM_BITtransform GL_VIEWPORT_BITviewport Grupos de atributos

21 OpenGLA. García-Alonso21 Agrupamiento Vertex arrays –Evitar pérdidas de tiempo en llamadas a funciones Display Lists –Ídem –La información puede estar ya más procesada –Almacenar en el procesador gráfico para aliviar el bus Workstations PCs

22 OpenGLA. García-Alonso22 Comandos entre : glBegin-glEnd CommandPurpose of CommandReference glVertex*()set vertex coordinatesChapter 2 glColor*()set current colorChapter 5 glIndex*()set current color indexChapter 5 glNormal*()set normal vector coordinatesChapter 2 glEvalCoord*()generate coordinatesChapter 11 glCallList(), glCallLists()execute display list(s)Chapter 4 glTexCoord*()set texture coordinatesChapter 9 glEdgeFlag*()control drawing of edgesChapter 2 glMaterial*()set material propertiesChapter 6

23 OpenGLA. García-Alonso23 Ejemplo 020 : Window to viewport Exit from an application gl –glMatrixMode –glLoadIdentity –viewport –glOrtho –glGetIntegerv glut –glutReshapeFunc( myNewSize ) void myNewSize( int w, int h )

24 OpenGLA. García-Alonso24 Implementación en OpenGL Materiales Fuentes de luz Parámetros de control Texturas Bucle de visualización interactiva Aspectos prácticos estructuras de datos –Modelos geométricos –Materiales –Luces

25 OpenGLA. García-Alonso25 Materiales

26 OpenGLA. García-Alonso26 Fuentes de luz

27 OpenGLA. García-Alonso27 Parámetros de control

28 OpenGLA. García-Alonso28 Texturas Textura superficies Reducir detalles geométricos Iluminación precalculada (texturas, texturas animadas)

29 OpenGLA. García-Alonso29 Bucle de visualización

30 OpenGLA. García-Alonso30 Estructuras geométricas

31 OpenGLA. García-Alonso31 Estructuras materiales

32 OpenGLA. García-Alonso32 Estructuras luces Limitadas (8) Coste de las luces Luz en la cabeza VRML : radio de acción de las luces posicionales y focos

33 OpenGLA. García-Alonso33 Materiales (parámetros) Definir las constantes usadas para distintos materiales: hierro, acero, plata, oro


Descargar ppt "OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK"

Presentaciones similares


Anuncios Google