• No se han encontrado resultados

Introducción Informática Gráfica

N/A
N/A
Protected

Academic year: 2021

Share "Introducción Informática Gráfica"

Copied!
12
0
0

Texto completo

(1)

Introducción Informática Gráfica

Segundo Esteban San Román

Dpto. Arquitectura de Computadores y Automáitca Fac. CC. Físicas, Desp. 236, Fac. Informática, Desp:421 [email protected]

91-3944740

‰ Historia

‰ Proceso de Visualización

‰ Paradigma Modelado-Renderizado, CPU-GPU

‰ APIS Gráficas.

‰ OpenGL vs DirectX

Evolución del hardware y las aplicaciones

‰ Años 50: MIT primeros CRT’s (I.Shuderland)

‰ Años 60: Industrias aeronáutica y automóvil

‰ Años 70: CAD/CAM, Plotters, Videojuegos 2D

‰ Años 80: Aparece Impr. Laser

‰ Años 80: Industria de Animación

‰ Años 90: Industria del videojuego (Tarjetas PC: NVIDIA, ATI, …)

‰ Siglo XXI: Sistemas Empotrados

(2)

Introducción a la Informatic Gráfica

Estandarización de APIs Gráficos

‰ 1977: 3D CGS ACM/SIGGRAPH

‰ 1985: GKS ( bidimensional ) ISO ANSI

‰ 1988: GKS-3D, PHIGS

‰ 1989: SGI IrisGL (‘Terminator2’)

‰ 1992: SGI -> OpenGL

‰ 1993: Mesa 3D (OpenSource)

‰ 1995: RenderMan (Pixar) (‘ToyStory’)

‰ 1995: Microsoft DirectX 1.0

‰ 2001: Pixel-Vertex Shaders

‰ 2007: Vista-DirectX10

‰ 2008: OpenGL 3.0

Historia APIS

Estado Actual (imagen estática)

¿Cuál es la imagen real y la sintética?

(3)

Introducción a la Informatic Gráfica

Futuro Gráficos (videojuegos)

Aplicar técnicas de la industria de la animación 3D

‰ Nuevas técnicas de modelado

‰Mayor nº de superficies,

‰Bump-normal mapping

‰ Múltiples materiales

‰ Nuevas técnicas de iluminación

‰Shaders con efectos ilumin.

‰Sombras

‰ Animación

‰Física en ropas

‰Animación facial

Proceso de Visualización

‰ Procesamiento de imagen (Visión): La adquisición y tratamiento de una imagen para conseguir un modelo informático de la misma

‰ Síntesis de imagen (Proceso de visualización): es el conjunto de operaciones (en 3D y en 2D) sobre un Modelo Informático de Datos para obtener una Representación Gráfica del mismo en un

dispositivo físico de representación.

‰ Proceso de Visualización 2D Modelo Geométrico Recortado Primitivas de Dibujo Rasterization / Scan Conversion Cambio de Coordenadas Display 2-D

(4)

Introducción a la Informatic Gráfica Proceso de Visualización 3D Recorrido de la escena Transform. de la Vista Recortado Eliminación de Caras Proyección Iluminación Rasterization / Scan Conversion Transformación del Dispositivo 3-D Transform. del Modelo Display Modelado/Renderizado - CPU/GPU MODELADO • Recorrido de la Escena • Interacción con la Escena • Animación Aplicación Geometría (Vertices) Raster (Fragmentos) Scena 3D input Image output

(5)

Introducción a la Informatic Gráfica APIs Gráficas ‰ Pricipales APIs: ‰OpenGL ‰D3D (DirectX) ‰ Qué proporcionan:

‰Implementa toda la parte de renderizado

‰Más eficiente: extensiones hardware

‰Portable a otros SO (en el caso de OpenGL)

‰Versiones para diferente hardware (ES)

‰ Sobre estas APIs se montan otras de más alto nivel:

‰PLIB, SDL, OSG, FaceFX

‰Motores de Videojuegos: Nebula (O-D),

Unreal Eng (D)

ID Tech Eng (Quake) (O)

Evolución del Hardware-Software gráfico

‰ Evolución de las GPU

1. GPU con ‘pipeline’ fijo.

2. Dos procesadores programables (Vertices/Pixeles).

3. ‘Stream’ configurable de GPU (NVIDIA GeForce 8800)

‰ Las APIs han evolucionado, aceptando lenguajes de Shaders:

1. Programación Cg (NVIDIA)

2. HLSL

3. GLSL

(6)

Introducción a la Informatic Gráfica

APIS Gráficas Niveles de Abstracción de la programación de GPUs

APIS Gráficas Programaci ón d e GPUs: A P Is ( A z u l, Cg (Verde)

(7)

Introducción a la Informatic Gráfica

OpenGL

‰ OpenGL es la interfaz software del hardware gráfico para desarrollar aplicaciones 2D y 3D:

‰Programación a medio-nivel

‰Intuitivo (unas 120 funciones con sintaxis sencilla)

‰Preparado para la Red (servidor-cliente)

‰Pipe-Line gobernado por una Maquina de Estados

‰Portable

‰A nivel SO (UNIX, Linux, Windows, MacOs,…)

‰A nivel HW (Computadores, Consolas, Móviles…)

‰A nivel de Lenguajes(C, C++, Fortran, Ada, Java)

Librerías OGL

‰ Librerías de OpenGL:

‰GL: Librería OpenGL (gl.h, opengl32.dll). Implementa el núcleo de OpenGL, es

muy básica, trabaja a muy bajo nivel y no gestiona eventos ni ventanas.

‰GLU: OpenGL Utility Library (glu.h, glu32.dll). Librería que nos proporciona

rutinas de más alto nivel.

‰Conexión sistema nativo:

‰GLX

‰WGL

‰ Librerías de Utilidades:

‰GLUT: API multiplataforma que facilita una

funcionalidad para el manejo de ventanas e interacción por medio de teclado y ratón.

‰GLUI: Interfaz de usuario basada en GLUT;

proporciona elementos de control tales como botones, cajas de selección y spinners.

(8)

Introducción a la Informatic Gráfica

Ventana OpenGL con GLUT

‰ Crear la ventana OpenGL utilizando GLUT.

#include <GL/glut.h> void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glFlush(); }

void main(int argc, char **argv) { glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100,100);

glutInitWindowSize(320,320);

glutCreateWindow("3D Tech- GLUT Tutorial"); glutDisplayFunc(renderScene);

glutMainLoop(); // Bucle infinito, gestionar los eventos y callbacks

}

http://www.lighthouse3d.com/opengl/glut/ http://www.xmission.com/~nate/glut.html

Ejemplo sobre API de Windows

‰ Necesitamos:

‰ La gestión de ventanas se realizaría con la API de WINDOWS

#include <windows.h> // Header File For Windows

#include <gl\gl.h> // Header File For The OpenGL32 Library

#include <gl\glu.h> // Header File For The GLu32 Library

HDC hDC=NULL; // Private GDI Device Context

HGLRC hRC=NULL; // Permanent Rendering Context

HWND hWnd=NULL; // Holds Our Window Handle

HINSTANCE hInstance; // Holds The Instance Of The Application

(9)

Introducción a la Informatic Gráfica

Ejemplo sobre API de Windows boolCreateGLWindow(char* title,intwidth, intheight,intbits, boolfullscreenflag){ if (!RegisterClass(&wc))… // Attempt to register the window class if (!(hWnd = CreateWindowEx(dwExStyle…), // Create the window

static PIXELFORMATDESCRIPTOR pfd =… // pfd tells windows how we want things to be if (!(hDC = GetDC(hWnd))) KillGLWindow(); … // Did we get a device context?

if (!(PixelFormat = ChoosePixelFormat(hDC,&pfd))) KillGLWindow(); // A matching pixel format? if(!SetPixelFormat(hDC,PixelFormat,&pfd)) KillGLWindow(); // Are we able to set the PFD? if (!(hRC = wglCreateContext(hDC))) KillGLWindow(); // Are we able to get a rendering context? if(!wglMakeCurrent(hDC,hRC)) KillGLWindow(); // Try to activate the rendering context ShowWindow(hWnd,SW_SHOW); // Show the window

SetForegroundWindow(hWnd); // Slightly higher priority

SetFocus(hWnd); // Sets keyboard focus to the window ReSizeGLScene(width, height); // Set up our perspective GL screen if (!InitGL()) KillGLWindow(); // Initialize our newly created GL window } DirectX Noviembre2006 (Especif. DirectX11, 2008) WindowsVista. DirectX 10.0 Agosto 2008 Especificaciones. DirectX 11.0 Bimonthly from 2005-08 Windows XP DirectX 9.0c December 24, 2002 Windows Server 2003 DirectX 9.0 September 30, 2000 DirectX 8.0 September 22, 1999 Windows 2000, ME DirectX 7.0 August 7, 1998 Windows NT 4.0 DirectX 6.0 September 15, 1996 Windows NT 4.0 SP3 DirectX 3.0 June 5, 1996 Windows 95and NT 4.0 DirectX 2.0 September 30, 1995 DirectX 1.0 Date released Operating system Logo version

(10)

Introducción a la Informatic Gráfica

Componentes Direct-X

‰ Dos APIs gráficas DirectX (unificado en las últimas versiones):

‰ DirectDraw (obsoleta): para gráficos 2D (Raster Graphics)

‰ Direct3D (D3D): para gráficos 3D

‰ DirectInput: Procesa datos de keyboard, mouse, joystick, game controllers

‰ DirectPlay: Maneja las comunicaciones por red

‰ DirectSound: Reproducción y grabado de sonido Waveform

‰ DirectSound3D (DS3D): Reproducción de sonido 3D.

‰ DirectMusic: Reproducción de Soundtracks de DirectMusic Producer

‰ DirectX Media: DirectAnimation, DirectShow, DirectX Video Acceleration, soporta codificadores y decodificadores, ….

Direct3D

‰ Direct3D: API gráfica de bajo nivel con aceleración 3D del hardware.

‰ Entre Direct3D y el dispositivo gráfico se encuentra el HAL (Capa Abstracción Hardware), implementado por el fabricante

‰ Librerías básicas:

‰ D3D: Es el núclo de Direct3D ‰ D3DX: provee funcionales adicionales.

‰Line Drawing Support in D3DX (Direct3D 9) ‰Mesh Support in D3DX (Direct3D 9) ‰Math Function Support in D3DX (Direct3D 9) ‰Texture Support in D3DX (Direct3D 9)

(11)

Introducción a la Informatic Gráfica

Crear una Ventana con un dispositivo D3D

‰ Creamos una ventana Windows

‰ Creamos el interfaz

‰ Creamos el Disp.Renderizado Liberar al salir INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )

{ // Register the window class.

WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL,"D3D Tutorial", NULL }; RegisterClassEx( &wc );

// Create the application's window.

HWND hWnd = CreateWindow( "Direct3D Tutorial", "Direct3D Tutorial 01: CreateDevice",WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,

GetDesktopWindow(), NULL, wc.hInstance, NULL );

if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )return E_FAIL;

D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE;

d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; if( FAILED( g_pD3D->CreateDevice(

D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) ) )

VOID Cleanup()

{if( g_pd3dDevice != NULL) g_pd3dDevice->Release(); if( g_pD3D != NULL) g_pD3D->Release(); } OpenGL vs DirectX ‰ Portabilidad:

‰Direct3D es para la familia de Microsoft's Windows, incluyendo versiones empotradas para Xbox y Sega's Dreamcast.

‰OpenGL dispone de implementaciones para Microsoft Windows, UNIX, Mac OS X, Linux y PlayStation 3.

‰OpenGL es la librería primaria para iPhone, Android (plataforma de móviles) y Symbian OS.

‰Variantes de OpenGL funcionan sobre Nintendo GameCube and Wii, Nintendo DS y PSP.

‰ Mercado:

‰DirectX ha ocupado un mayor porcentaje en el mercado de los videojuegos.

(12)

Introducción a la Informatic Gráfica

OpenGL vs DirectX

‰ Modo de funcionamiento:

‰D3D esta diseñado como un interfaz de hardware gráfico 3D, espera que la aplicación dirija el hardware.

‰OpenGL es un sistema de renderizado 3D, que puede ser acelerado por hardware. OpenGL gestiona la aceleración hardware.

‰ Programacíón:

‰Programación básica: más fácil OpenGL

‰Aprovechar el Hardware: más fácil DirectX

‰Programación de Drivers: más fácil DirectX

‰ Actualizaciones:

‰Extensiones OpenGL para nuevas capacidades hardware.

‰DirectX nuevas versiones adaptadas a las nuevas capacidades hardware.

‰ “API Wars”: El bajo rendimiento de OpenGL vs D3D sobre plataformas Windows se debe a la implementación realizada por Microsoft

Referencias

Documento similar

•cero que suplo con arreglo á lo que dice el autor en el Prólogo de su obra impresa: «Ya estaba estendida esta Noticia, año de 1750; y pareció forzo- so detener su impresión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

- Explicación del desarrollo de la práctica, con los pasos y proceso de ejecución de la técnica de dibujo - Cierre: reforzamiento de las actividades desarrolladas, meta