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

Slides:



Advertisements
Presentaciones similares
Curvas y Superficies Referencia – capítulo 11 del Libro Rojo.
Advertisements

Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Herramientas y bibliotecas para gráficas
Java Binding for the OpenGL API Unidad III. ¿Qué es OpenGL? Open GL es un entorno de desarrollo portable de aplicaciones gráficas interactivas en 2D y.
Programación 1 Presentación de c++
SUN CERTIFIED JAVA PROGRAMMER (SCJP) CAPÍTULO 10: DEVELOPMENT.
Input – Scanner y Cajas de diálogo
Dibujar en 3D: puntos, líneas y polígonos.
El lenguaje de programación Java
Numeric Types, Expressions, and Output
1 Chapter 12 Arrays Dale/Weems/Headington. 2 Chapter 12 Topics l Declaring and Using a One-Dimensional Array l Passing an Array as a Function Argument.
Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0
Curso de OpenGL Verano de hrs. de adrenalina 3D M.C. Luis A. Zarza López.
Librerías Gráficas Introducción a OpenGL
Introducción a los gráficos 3D
OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
At the Amusement Park ¡Qué divertido! ¡Qué miedo! la montaña rusa los autitos chocadores el boleto tener miedo la vuelta al mundo UNIDAD 7 Lección 2 Table.
WWW. WIRELESS WIFI Wireless-Fidelity Es un mecanismo de conexión de dispositivos electrónicos de forma inalámbrica.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Tecnología y Estructura de Costos. Technologies u A technology is a process by which inputs are converted to an output. u E.g. labor, a computer, a projector,
Empleando apuntadores una función puede entregar múltiples resultados / /Esta función no funciona #include void intercambiaValores(float a, float b) {
OpenGL.
OpenGL en Dev C++ 1. La librerías GLUT para Dev C++ descomprimir(*.zip) → Directorio X 2. glut32.dll (X) →windows/system (Windows 9x/Me), →windows/system32(WindowsNT/2000/XP/2003).
1 Computación Gráfica (Algunos Fundamentos) Universidad de los Andes Demián Gutierrez Octubre 2011.
OpenGL básico con SDL Alejandro Valenzuela Roca Laboratorio de Investigación y Desarrollo de Software Libre 25 de Abril de 2008.
Content based Information Retrieval. Integrated Browsing and Querying for Image Databases Simone Santini University of California, San Diego Ramesh Jain.
Algunas ideas básicas de C++
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
Curso Sistemas de Información Geográfica (SIG): Profesor: Luis Carvacho Bart Ayudante: Claudia Ebensperger León Profesor: Luis Carvacho Bart Ayudante:
Administración de Sistemas Gestores de Bases de Datos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
AccesO a información sobre investigación en agricultura :
Introducción a la programación en JAVA
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
HERRAMIENTAS DE INFORMATICA
>> Representación << Poliedros
¿Cómo almacenar grandes cantidades de datos?
Polimorfismo y Funciones Virtuales
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
Algunas ideas básicas de C++
CH 3B: Vocabulario y Adjetivos Plurales
Asking Questions P. 184 Realidades 1.
Algunas ideas básicas de C++
Nociones básicas sobre C++
Soporte temporal en gvSIG
Polimorfismo y Métodos Virtuales
Nociones básicas sobre C++
Unidad 3. Introducción a la programación
Oracle Pl/SQl Developer – Nivel 1
Plantillas (Templates)‏
Algunas Características de C++ no presentes en C
GRAPHIC MATERIALS 1. GRAPHIC MATERIALS. GRAPHIC MATERIALS 1. GRAPHIC MATERIALS.
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Mapeo Ventana-Puerto de Visión
Customización en ADempiere
Programación lógica y funcional Unidad I Conceptos fundamentales.
Introducción práctica la uso de la tarjeta Arduino.
Características Generales y Entornos de Desarrollo
Algunas ideas básicas de C++
Hardware e implementación en Sistemas Operativos
Arreglos en Java.
Algunas Características de C++ no presentes en C
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
Arrays Programming COMP102 Prog. Fundamentals I: Arrays / Slide 2 Arrays l An array is a collection of data elements that are of the same type (e.g.,
Algunas Características de C++ no presentes en C
Templates (en español: Pantillas, modelos, patrones)‏
Transcripción de la presentación:

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

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

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

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

OpenGLA. García-Alonso5 Entorno de programación Visual C++ 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.

OpenGLA. García-Alonso6 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

OpenGLA. García-Alonso7... (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)

OpenGLA. García-Alonso8 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

OpenGLA. García-Alonso9... (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)

OpenGLA. García-Alonso10 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

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

OpenGLA. García-Alonso12 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()

OpenGLA. García-Alonso13 Ejemplo 012 : DobleBuffering Dibujado de un polígono (atributo y geometría) –glColor3f( 1.0f, 0.0f, 0.0f ); –glBegin( GL_POLYGON ); glVertex3f( endX0, endY0, 0.0f ); glVertex3f( endX1, endY1, 0.0f ); glVertex3f( endX2, endY2, 0.0f ); glVertex3f( endX3, endY3, 0.0f ); –glEnd( );

OpenGLA. García-Alonso14 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

OpenGLA. García-Alonso15 Otras primitivas disponibles (glu/glut library) –Polígonos : cóncavos, múltiplemente conexos –Objetos (uso auxiliar, no para crear modelos) –Evaluators, NURBS, etc Vertex arrays Display lists Texto –No existe primitiva –Usar texturas (problema aliasing)

OpenGLA. García-Alonso16 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*

OpenGLA. García-Alonso17 Ejemplo XXX : degradado Hay que preparar este ejemplo –dddddd

OpenGLA. García-Alonso18 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

OpenGLA. García-Alonso19 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

OpenGLA. García-Alonso20 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

OpenGLA. García-Alonso21 Constants & “defined names” Ejemplos : –#define GL_COLOR_BUFFER_BIT0x –#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 )

OpenGLA. García-Alonso22 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

OpenGLA. García-Alonso23 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

OpenGLA. García-Alonso24 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

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

OpenGLA. García-Alonso26 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

OpenGLA. García-Alonso27 Materiales

OpenGLA. García-Alonso28 Fuentes de luz

OpenGLA. García-Alonso29 Parámetros de control

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

OpenGLA. García-Alonso31 Bucle de visualización

OpenGLA. García-Alonso32 Estructuras geométricas

OpenGLA. García-Alonso33 Estructuras materiales

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

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