martes, 12 de febrero de 2013

Dispositivos de hardware y software para el despliegue gráfico.

Un sistema gráfico tradicional consta de cuatro componentes: procesador, unidadde procesamiento gráfico, dispositivos de entrada y dispositivos de salida. Elprocesador desempeña un papel central en cualquier sistema gráfico y cada unode los demás componentes debe comunicarse en algún momento con otro, o conel procesador mediante un canal de datos.

Generalmente el dispositivo principal de salida de un sistema gráfico es un monitorde video. El tipo más común es un CRT y actualmente se incrementa el uso de losLCD.

 
La cantidad de memoria de video requerida para almacenar una pantalla se determina multiplicando el número de pixeles horizontales, el número depixeles verticales y el número de bytes usados para codificar un pixel. Memoria de video = Res. H x Res. V x Núm. de bytes por pixel

Cada pixel se codifica mediante un conjunto de bits de longituddeterminada (la llamada profundidad de color ), por ejemplo, puede codificarseun pixel con un byte, u 8 bits, de manera que cada pixel admite 256 variantes (2dígitos por bit, elevados a la octava potencia). En las imágenes de color verdadero se suelen usar tres bytes para definir un color, es decir, en totalpodemos representar un total de 2 elevado a 24, o sea 16,777,216 colores diferentes.


El usuario de un sistema gráfico se comunica con el programa por medio deciertos dispositivos de entrada y obtiene los resultados en los dispositivos de salida.


El software gráfico
Una representación gráfica consisten en un conjunto de pixeles que se obtiene apartir de una idea de más alto nivel; como puede ser la descripción de la gráfica entérminos de líneas, arcos, colores etc. o incluso en términos de objetostridimensionales, puntos de vista e iluminación.El como llegar de estas descripciones de alto nivel al conjunto de pixeles final esalgo de lo que las diferentes partes del sistema se deberán encargar; por logeneral el programador dispone de una serie de librerías de programación gráficaque le permiten escribir aplicaciones sin tener que llegar a conocer en detalle elhardware sobre el que se ejecutará su código, y sin tener que escribir desde elprincipio miles de procedimientos que, además, distan de ser triviales. Ejemplosde estas librerías podrían son
OpenGL de SGI y Direct3D de Microsoft.
 
Investiga:
Que implementaciones existen basadas en OpenGL.
Que es un API.
revisión ( en clase,  apuntar en cuaderno)

más información y referencia: http://es.scribd.com/doc/13642361/Introduccion-Computacion-Grafica

lunes, 11 de febrero de 2013

actividad opengl

Actividad práctica

  1. Investigue que es opengl
  2. Como instalar las librerías
  3. Probar el siguiente código
  4. Los resultados de la actividad deben publicarse en su blog , incluyendo una captura de la pantalla donde se muestra los resultados de la ejecución del programa, la secuencia de pasos que realizó desde la instalación de la s librerías, fecha de revision Lunes 11 de Febrero

/*cubetex.c           */
/* Rotating cube with texture mapping */
/* mouse buttons control direction of
/* rotation, keyboard allows start/top/quit */
/* E. Angel, Interactive Computer Graphics */
/* A Top-Down Approach with OpenGL, Third Edition */
/* Addison-Wesley Longman, 2003 */
#include <stdlib.h>
#include <GL/glut.h>
GLfloat planes[]= {-1.0, 0.0, 1.0, 0.0};
GLfloat planet[]= {0.0, -1.0,  0.0, 1.0};
 GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
 {1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},
 {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
 GLfloat colors[][4] = {{0.0,0.0,0.0,0.5},{1.0,0.0,0.0,0.5},
 {1.0,1.0,0.0,0.5}, {0.0,1.0,0.0,0.5}, {0.0,0.0,1.0,0.5},
 {1.0,0.0,1.0,0.5}, {1.0,1.0,1.0,0.5}, {0.0,1.0,1.0,0.5}};
void polygon(int a, int b, int c , int d)
{
/* draw a polygon via list of vertices */
  glBegin(GL_POLYGON);
 glColor4fv(colors[a]);
 glTexCoord2f(0.0,0.0);
 glVertex3fv(vertices[a]);
 glColor4fv(colors[b]);
 glTexCoord2f(0.0,1.0);
 glVertex3fv(vertices[b]);
 glColor4fv(colors[c]);
 glTexCoord2f(1.0,1.0);
 glVertex3fv(vertices[c]);
 glColor4fv(colors[d]);
 glTexCoord2f(1.0,0.0);
 glVertex3fv(vertices[d]);
 glEnd();
                          }
void colorcube(void)
{
/* map vertices to faces */
 polygon(0,3,2,1);
 polygon(2,3,7,6);
 polygon(0,4,7,3);
 polygon(1,2,6,5);
 polygon(4,5,6,7);
 polygon(0,1,5,4);
}
static GLfloat theta[] = {0.0,0.0,0.0};
static GLint axis = 2;
void display(void)
{
/* display callback, clear frame buffer and z buffer,
   rotate cube and draw, swap buffers */
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glRotatef(theta[0], 1.0, 0.0, 0.0);
 glRotatef(theta[1], 0.0, 1.0, 0.0);
 glRotatef(theta[2], 0.0, 0.0, 1.0);
 colorcube();

 glutSwapBuffers();
}
void spinCube()
{
/* Idle callback, spin cube 2 degrees about selected axis */
 theta[axis] += 2.0;
 if( theta[axis] > 360.0 ) theta[axis] -= 360.0;
 glutPostRedisplay();
}
void mouse(int btn, int state, int x, int y)
{
/* mouse callback, selects an axis about which to rotate */
 if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0;
 if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1;
 if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;
}
void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
            2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
    else
        glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
            2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
}
void key(unsigned char k, int x, int y)
{
 if(k == '1') glutIdleFunc(spinCube);
 if(k == '2') glutIdleFunc(NULL);
 if(k == 'q') exit(0);
}
void
main(int argc, char **argv)
{
   GLubyte image[64][64][3];
   int i, j, r, c;
   for(i=0;i<64;i++)
   {
     for(j=0;j<64;j++)
     {
       c = ((((i&0x8)==0)^((j&0x8))==0))*255;
       image[i][j][0]= (GLubyte) c;
       image[i][j][1]= (GLubyte) c;
       image[i][j][2]= (GLubyte) c;
     }
   }
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutCreateWindow("colorcube");
/* need both double buffering and z buffer */
    glutReshapeFunc(myReshape);
    glutDisplayFunc(display);
   glutIdleFunc(spinCube);
   glutMouseFunc(mouse);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);
   glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   glutKeyboardFunc(key);
   glClearColor(1.0,1.0,1.0,1.0);
   glutMainLoop();
}

Instalar glut 3.7.6

Configurar OpenGL y GLUT en Windows (Visual Studio)


Configurar OpenGL y GLUT en Visual Studio de Windows es también muy sencillo.
  1. Aunque OpenGL viene con todas las versiones de Windows, GLUT hace falta descargarlo. Esto se puede hacer desde la web de Nate Robins (glut-3.7.6-bin.zip).
  2. Después de descomprimirlo borramos los ficheros glut.def y README-win32.txt.
  3. Copiamos la dll glut32.dll en %WinDir%\System32 (C:\Windows\System32 por ejemplo).
  4. También copiamos la librería glut32.lib en el subdirectorio lib de VC (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib en Windows 7/Vista o C:\Program Files\Microsoft Visual Studio 9.0\VC\lib en Windows XP por ejemplo).
  5. Después crear el subdirectorio gl en el directorio include de VC y copiar allí el fichero de cabecera glut32.h (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\gl o C:\Program Files\Microsoft Visual Studio 9.0\VC\include\gl).
El siguiente video muestra los pasos anteriormente explicados:

miércoles, 6 de febrero de 2013

Opengl

Actividad práctica
  1. Investigue que es opengl
  2. Como instalar las librerías ( version  glut 3.7.6)
  3. Probar el siguiente código
  4. Los resultados de la actividad deben publicarse en su blog , incluyendo una captura de la pantalla donde se muestra los resultados de la ejecución del programa, la secuencia de pasos que realizó desde la instalación de la s librerías, fecha de revision Lunes 11 de Enero
/*cubetex.c           */
/* Rotating cube with texture mapping */
/* mouse buttons control direction of
/* rotation, keyboard allows start/top/quit */
/* E. Angel, Interactive Computer Graphics */
/* A Top-Down Approach with OpenGL, Third Edition */
/* Addison-Wesley Longman, 2003 */
#include <stdlib.h>
#include <GL/glut.h>
GLfloat planes[]= {-1.0, 0.0, 1.0, 0.0};
GLfloat planet[]= {0.0, -1.0,  0.0, 1.0};
 GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
 {1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},
 {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
 GLfloat colors[][4] = {{0.0,0.0,0.0,0.5},{1.0,0.0,0.0,0.5},
 {1.0,1.0,0.0,0.5}, {0.0,1.0,0.0,0.5}, {0.0,0.0,1.0,0.5},
 {1.0,0.0,1.0,0.5}, {1.0,1.0,1.0,0.5}, {0.0,1.0,1.0,0.5}};
void polygon(int a, int b, int c , int d)
{
/* draw a polygon via list of vertices */
  glBegin(GL_POLYGON);
 glColor4fv(colors[a]);
 glTexCoord2f(0.0,0.0);
 glVertex3fv(vertices[a]);
 glColor4fv(colors[b]);
 glTexCoord2f(0.0,1.0);
 glVertex3fv(vertices[b]);
 glColor4fv(colors[c]);
 glTexCoord2f(1.0,1.0);
 glVertex3fv(vertices[c]);
 glColor4fv(colors[d]);
 glTexCoord2f(1.0,0.0);
 glVertex3fv(vertices[d]);
 glEnd();
                          }
void colorcube(void)
{
/* map vertices to faces */
 polygon(0,3,2,1);
 polygon(2,3,7,6);
 polygon(0,4,7,3);
 polygon(1,2,6,5);
 polygon(4,5,6,7);
 polygon(0,1,5,4);
}
static GLfloat theta[] = {0.0,0.0,0.0};
static GLint axis = 2;
void display(void)
{
/* display callback, clear frame buffer and z buffer,
   rotate cube and draw, swap buffers */
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glRotatef(theta[0], 1.0, 0.0, 0.0);
 glRotatef(theta[1], 0.0, 1.0, 0.0);
 glRotatef(theta[2], 0.0, 0.0, 1.0);
 colorcube();

 glutSwapBuffers();
}
void spinCube()
{
/* Idle callback, spin cube 2 degrees about selected axis */
 theta[axis] += 2.0;
 if( theta[axis] > 360.0 ) theta[axis] -= 360.0;
 glutPostRedisplay();
}
void mouse(int btn, int state, int x, int y)
{
/* mouse callback, selects an axis about which to rotate */
 if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0;
 if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1;
 if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;
}
void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
            2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
    else
        glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
            2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
}
void key(unsigned char k, int x, int y)
{
 if(k == '1') glutIdleFunc(spinCube);
 if(k == '2') glutIdleFunc(NULL);
 if(k == 'q') exit(0);
}
void
main(int argc, char **argv)
{
   GLubyte image[64][64][3];
   int i, j, r, c;
   for(i=0;i<64;i++)
   {
     for(j=0;j<64;j++)
     {
       c = ((((i&0x8)==0)^((j&0x8))==0))*255;
       image[i][j][0]= (GLubyte) c;
       image[i][j][1]= (GLubyte) c;
       image[i][j][2]= (GLubyte) c;
     }
   }
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutCreateWindow("colorcube");
/* need both double buffering and z buffer */
    glutReshapeFunc(myReshape);
    glutDisplayFunc(display);
   glutIdleFunc(spinCube);
   glutMouseFunc(mouse);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);
   glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   glutKeyboardFunc(key);
   glClearColor(1.0,1.0,1.0,1.0);
   glutMainLoop();
}

Fecha de publicacion Lunes 11 de febrero

lunes, 4 de febrero de 2013

Investigue los siguientes conceptos y publique en su blog los resultados, no olvide incluir las fuentes de información

1.Aplicaciones de gráficos de computadora
2. Sistema de gráficos
       Procesador
       Memoria
       frame buffer
       dispositivos de salida
      dispositivos de entrada
3.  disparidad binocular
     información monocular
revise el siguiente enlace

http://www.slideshare.net/AlonsoAlvarez/graficos-por-computadora-1

consulte otras  fuentes para profundizar en cada tema.

publique en su blog como  glosario ( agregar al glosario de la activiadad 2)

actividad Miércoles  6 de Febrero


Actividad   Jueves  7 de  Febrero : Leer la información de los siguientes enlaces, hacer un glosario de términos( 15 mínimo) incluirlo en la sección de glosario de su blog bajo el subtitulo de hardware y software dentro del mismo.  publicación  Lunes 11  de Febrero
escriba un ensayo sobre los temas  vistos en los enlaces,  (mínimo 2 cuartillas)
nota : una cuartilla es equivalente a  una hoja tamaño carta, espaciado sencillo y letra arial 12.
          Primero escribalo en word y luego pegar el texto en el blog.
Dispositivos                   http://giga.cps.unizar.es/~spd/work/curso_hs/

pantallas lcd                  http://www.xataka.com/hd/como-funciona-un-televisor-lcd

pantallas  de plasma     http://www.profisica.cl/comofuncionan/como.php?id=13

aliasing                          http://es.wikipedia.org/wiki/Aliasing

antialiasing                   
http://es.wikipedia.org/wiki/Antialiasing

martes, 29 de enero de 2013

Unidad I Introducción a la graficación por computadora.

Actividad #1 en el siguiente enlace encontrarás un libro de texto de la materia, debes leer el 1er capítulo, seleccionar 20 palabras para crear un glosario y publicar en su blog individual durante la clase del miércoles 30 de Enero.

http://www.scribd.com/doc/39029313/Libro-de-Texto-Para-La-Materia-de-Graficacion