OpenGL.

Slides:



Advertisements
Presentaciones similares
Diseño y Animación en la Educación Presentado por: Roger Brandao Juan Bermúdez Francisco Bravo Antony Domínguz.
Advertisements

Curvas y Superficies Referencia – capítulo 11 del Libro Rojo.
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
Sistemas de Graficación
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®
Informática II Clase 12: Flujos Diego Fernando Serna Restrepo
Sistemas de coordenadas de referencia
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
Entornos de programación
Programación 1 Presentación de c++
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.
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.
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.
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
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
HS/HL Removal1 FUNDAMENTOS DE ELIMINACIÓN DE SUPERFICIES OCULTAS Graficación FCC.
Dibujar en 3D: puntos, líneas y polígonos.
El lenguaje de programación Java
Numeric Types, Expressions, and Output
Weka.
SpoolFactory - Spool Converter Pro
Introducción al diseño gráfico
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
Clase 10: Estructuras de datos y arreglos.
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 -
Construcción de Interfaces a Usuario - ©1999 Construcción de Interfaces a Usuario: Sistemas de Ventanas.
Notes #18 Numbers 31 and higher Standard 1.2
Graficacion.
Unidad II Introducción a la programación en C++
Librerías Gráficas Introducción a OpenGL
Introducción a los gráficos 3D
HYPERBOLAS Standard 4, 9, 16, 17 DEFINITION OF A HYPERBOLA
OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK
Computación Gráfica I – CI4321
Rep.TexturasA. García-Alonso1 >> Representación
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
WWW. WIRELESS WIFI Wireless-Fidelity Es un mecanismo de conexión de dispositivos electrónicos de forma inalámbrica.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
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.
Vamos a tratar algunos temas que es necesario conocer a la hora de administrar un sistema informático y que nos van a ser útiles sin importar el sistema.
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) {
Fundamentos de Programación
Prof. Víctor Aquino Urrutia
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
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.
Instituto de Ciencias y Humanidades Tabasco. El software Coordinar el uso del hardware Coordinar el uso del hardware Ejercer el control Programas de aplicación.
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.
Curso de Medidas Eléctricas 2016 CLASE 18 MEDIDAS AUTOMÁTICAS.
Rep.PoliedrosA. García-Alonso1 >> Representación
OpenGLA. García-Alonso1 Introducción a OpenGL LINK LINK
Transcripción de la presentación:

OpenGL

Introducción OpenGL es una interface de software para el hardware grafico, esta interface consiste de una larga serie de comandos para manipulación de objetos y operaciones sobre estos los cuales permiten controlar la implementación realizada en la forma de una maquina de estados finitos, donde cada una de las variables que determinan el estado se aplican a partir de ese punto hasta que se indique explícitamente el cambio, así las

variables de estado de OpenGL que vamos a utilizar mas comúnmente son: • Color (de dibujo y de borrado). • Matrices de Transformación (GL_MODELVIEW, GL_PROYECTION). • Patrones (de líneas y de relleno). • Modo de dibujo de poligonos. • Buffers de dibujo. • Buffer de Stencil. • Buffer de profundidad (z-Buffer). • Buffer de acumulacion.

Antecedentes Interactive Graphic Library 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

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

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

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.

Estados Máquina de estados Valor o estado Color de fondo Intensidad de luz Material de dibujo Luz encendida o apagada etc Valor o estado glColor*(), glGetFloatv() glEnable(), glDisable(), glIsEnabled() OpenGL is a state machine. You put it into various states (or modes) that then remain in effect until you change them. Many state variables refer to modes that are enabled or disabled with the command glEnable() or glDisable().

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

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

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 )

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

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

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

Diferenciar estos tres métodos glutPostRedisplay posts glutDisplayFuncbinds Display draws

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

... 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

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* glLineWidth glPointSize glLineStipple glPolygonMode glPolygonStipple : no se pueden usar entre glBegin y su correspondiente glEnd glEnable( GL_LINE_STIPPLE ) : basta llamarlo una vez, en el main() al inicializar el programa A. García-Alonso

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

Grupos de atributos 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

Agrupamiento Vertex arrays Display Lists 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

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

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 Luces