Diferencia entre revisiones de «ManuelRomero/grafica/presentacion»
De WikiEducator
(→TRANSFORMACIÓN EN EL PIPELINE GRÁFICO) |
(→TRANSFORMACIÓN EN EL PIPELINE GRÁFICO) |
||
Línea 86: | Línea 86: | ||
Viewport | Viewport | ||
#Coordenadas de la ventana (x,y) | #Coordenadas de la ventana (x,y) | ||
− | ===Coordenadas del objeto | + | ===Coordenadas del objeto=== |
*Dibujamos un eje de coordenadas x,y,z | *Dibujamos un eje de coordenadas x,y,z | ||
<source lang=cpp> | <source lang=cpp> | ||
Línea 114: | Línea 114: | ||
*Lo giramos para ver la coordenada z | *Lo giramos para ver la coordenada z | ||
[[Imagen:CoordenadasOpenGL.png|200px]] | [[Imagen:CoordenadasOpenGL.png|200px]] | ||
+ | *Este eje de coordenadas que hemos dibujado representaría el eje de coordenadas del objeto | ||
+ | *Ahora dibujamos un objeto en él, por ejemplo una tetera | ||
+ | *con la barra espaciadora podemos cambiar su representación, sólida o de alambres | ||
+ | *Representación sólida | ||
+ | [[Imagen:tetera1.png]] | ||
+ | *Represetnación en alambres | ||
+ | [[Imagen:tetera2.png]] | ||
+ | *Representación girada | ||
+ | [[Imagen:tetera3.png]] |
Revisión de 00:18 12 jun 2013
Esqueleto de un programa openGL
#include <GL/glut.h> // Drawing routine. void escena(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the buffers including // the depth buffer. glPolygonMode(GL_FRONT, GL_FILL); glBegin(GL_TRIANGLE_STRIP); glEnd(); // Write labels. glFlush(); } // Initialization routine. void setup(void) { glClearColor(1.0, 1.0, 1.0, 0.0); } // OpenGL window reshape routine. void redibuja(int w, int h) { glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 100.0, 0.0, 100.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } // Keyboard input processing routine. void teclado(unsigned char key, int x, int y) { switch(key) { case ' ': case 27: default: break; } } // Routine to output interaction instructions to the C++ window. void printInteraction(void) { cout << "Interaction:" << endl; cout << "Press the space bar to toggle between wirefrime and filled for the lower annulus." << endl; } // Main routine. int main(int argc, char **argv) { printInteraction(); glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); // Initialize the buffers // including the depth buffer. glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow("circularAnnuluses.cpp"); setup(); glutDisplayFunc(escena); glutReshapeFunc(redibuja); glutKeyboardFunc(teclado); glutMainLoop(); return 0; }
TRANSFORMACIÓN EN EL PIPELINE GRÁFICO
- Coordenadas del objeto (x,y,z,w)
Transformación ModelView
- Coordenadas del ojo
Proyección
- Cooredenadas de recorte
Perspectiva
- Coordenadas del dispositivo
Viewport
- Coordenadas de la ventana (x,y)
Coordenadas del objeto
- Dibujamos un eje de coordenadas x,y,z
void dibujaCoordenadas(void){ porFlechitas(); glLineWidth(2); glBegin(GL_LINES); glLineWidth(3); glColor3f(1,0,0);//Eje X glVertex3f(0,0,0); glVertex3f(15,0,0); glColor3f(0,1,0);//Eje X glVertex3f(0,0,0); glVertex3f(0,15,0); glColor3f(0,0,1);//Eje z glVertex3f(0,0,0); glVertex3f(0,0,15); glLineWidth(1); glEnd(); glPushMatrix(); glFlush(); }
- Así quedaría
- Lo giramos para ver la coordenada z
- Este eje de coordenadas que hemos dibujado representaría el eje de coordenadas del objeto
- Ahora dibujamos un objeto en él, por ejemplo una tetera
- con la barra espaciadora podemos cambiar su representación, sólida o de alambres
- Representación sólida
- Represetnación en alambres
- Representación girada