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

Introducción al lenguaje C
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
TIBERIUS Predictive Modelling Software
Introducción a la programación en JAVA
Cetis No. 119 Profa. Graciela Prado Becerra
Herramientas y bibliotecas para gráficas
Multiplique su productividad con el uso de Tablas en AutoCAD®
Sistemas de coordenadas de referencia
Fundamentos de la Programación Estructurada
Desarrollo de Aplicaciones para Internet
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.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Programación 1 Presentación de c++
Algoritmos y Estructuras de Datos
Programación Orientada a Objetos en Java
Ingeniero Anyelo Quintero
Introducción a OpenGL Mª del Carmen Santos.
Con fines prácticos se puede clasificar al software en tres tipos: Software de sistema Software de programación Software de aplicación.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
1.-En estos temas se va dar a conocer las herramientas necesarias para la aplicación de un sistema interactivo haciendo énfasis en la programación.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
El lenguaje de programación C - Funciones -
Abstracción de los datos y Orientación a Objeto Clase 13.
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
Tema 10: Interfaces Antonio J. Sierra.
Unidad I Java y C++ : Similitudes y diferencias
Input – Scanner y Cajas de diálogo
Archivos y Búsqueda Secuencial
JavaScript Programación Web. Java Script es un lenguaje de escripts que se usa en páginas web (ligero) Java es un lenguaje de programación orientada a.
SCJP Sun Certified Programmer for Java 6
Introducción a los punteros
Dibujar en 3D: puntos, líneas y polígonos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
Numeric Types, Expressions, and Output
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
ESTRUCTURA DE DATOS EN JAVA
Diseño de una base de datos Zavaleta Nolasco Karina
Valor X Valor Y Punto (0,0) Coordenadas.
Curso de OpenGL Verano de hrs. de adrenalina 3D M.C. Luis A. Zarza López.
El lenguaje de programación C - Vectores y matrices -
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Construcción de Interfaces a Usuario - ©1999 Construcción de Interfaces a Usuario: Sistemas de Ventanas.
Graficacion.
Librerías Gráficas Introducción a OpenGL
Introducción a los gráficos 3D
Elementos básicos del lenguaje
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
Rep.TexturasA. García-Alonso1 >> Representación
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
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) {
Metodología de Programación Clase 1 Leonel Lagos V
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Fundamentos de Programación
Prof. Víctor Aquino Urrutia
OpenGL.
El contexto gráfico La función paint y update nos suministran el contexto gráfico del applet o del componente, en otros casos, hemos de obtener el contexto.
:: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Introducción al Lenguaje C y al Visual C++. Lenguaje C El lenguaje C se conoce como un lenguaje compilado. Es un lenguaje estructurado, ya que permite.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Rep.IluminaciónA. García-Alonso1 >> Representación
OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK
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++ (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.

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()

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

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

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

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

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)

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)

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

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

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

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

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*

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

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

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

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

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 )

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

OpenGLA. García-Alonso25 Materiales

OpenGLA. García-Alonso26 Fuentes de luz

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

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

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

OpenGLA. García-Alonso30 Estructuras geométricas

OpenGLA. García-Alonso31 Estructuras materiales

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

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