1 / 33

Introducción a OpenGL

Introducción a OpenGL. LINK http:// www .sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones. Antecedentes. CORE Graphics standard (SIGGRAPH 1977) IGL-Plot 10 (Tektronix) Interactive Graphic Library HP-GL “plotting language” (Hewlett Packard) Hewlett Packard Graphic Language

libitha
Download Presentation

Introducción a OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 A. García-Alonso

  3. 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 A. García-Alonso

  4. 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 • glulibrería de mayor nivel construida sobre OpenGL • glauxlibrerí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 A. García-Alonso

  5. 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 <GL/gl.h> • #include <GL/glu.h> • If you are using GLUT for managing your window manager • #include <GL/glut.h> • Note that glut.h includes gl.h, glu.h, and glx.h automatically, so including all three files is redundant. A. García-Alonso

  6. 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() A. García-Alonso

  7. 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 A. García-Alonso

  8. 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 A. García-Alonso

  9. Constants & “defined names” • Ejemplos : • #define GL_COLOR_BUFFER_BIT 0x00004000 • #define GL_POINTS 0x0000 • #define GL_LINE_LOOP 0x0002 • #define GL_POLYGON 0x0009 • 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 ) A. García-Alonso

  10. 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 A. García-Alonso

  11. 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 drawingareade soporte • Asociar función (callback) a un evento (teclado, ratón, etc.) • Evento “drawingarea exposed” • Ajustar algún estado de “gl” • Bucle proceso eventos A. García-Alonso

  12. ... (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) A. García-Alonso

  13. ... (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) • voidDisplay ( void ) • glutMainLoop(); (dispatching events) A. García-Alonso

  14. Ejemplo 011 : Teclado • Exit from an application • Profundizar en el concepto de CallBack • gl • glLineWidth • glut • glutPostRedisplay() • glutKeyboardFunc( DoIt ) • voidDoIt (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 A. García-Alonso

  15. glutPostRedisplay posts glutDisplayFuncbinds Display draws Diferenciar estos tres métodos A. García-Alonso

  16. 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 A. García-Alonso

  17. ... • 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 A. García-Alonso

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

  19. 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 A. García-Alonso

  20. GL_ACCUM_BUFFER_BIT accum-buffer GL_ALL_ATTRIB_BITS -- GL_COLOR_BUFFER_BIT color-buffer GL_CURRENT_BIT current GL_DEPTH_BUFFER_BIT depth-buffer GL_ENABLE_BIT enable GL_EVAL_BIT eval GL_FOG_BIT fog GL_HINT_BIT hint GL_LIGHTING_BIT lighting GL_LINE_BIT line GL_LIST_BIT list GL_PIXEL_MODE_BIT pixel GL_POINT_BIT point GL_POLYGON_BIT polygon GL_POLYGON_STIPPLE_BIT polygon-stipple GL_SCISSOR_BIT scissor GL_STENCIL_BUFFER_BIT stencil-buffer GL_TEXTURE_BIT texture GL_TRANSFORM_BIT transform GL_VIEWPORT_BIT viewport Grupos de atributos A. García-Alonso

  21. 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 A. García-Alonso

  22. Command Purpose of Command Reference glVertex*() set vertex coordinates Chapter 2 glColor*() set current color Chapter 5 glIndex*() set current color index Chapter 5 glNormal*() set normal vector coordinates Chapter 2 glEvalCoord*() generate coordinates Chapter 11 glCallList(), glCallLists() execute display list(s) Chapter 4 glTexCoord*() set texture coordinates Chapter 9 glEdgeFlag*() control drawing of edges Chapter 2 glMaterial*() set material properties Chapter 6 Comandos entre : glBegin-glEnd A. García-Alonso

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

  24. 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 A. García-Alonso

  25. Materiales A. García-Alonso

  26. Fuentes de luz A. García-Alonso

  27. Parámetros de control A. García-Alonso

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

  29. Bucle de visualización A. García-Alonso

  30. Estructuras geométricas A. García-Alonso

  31. Estructuras materiales A. García-Alonso

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

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

More Related