{"id":41,"date":"2010-04-30T16:44:03","date_gmt":"2010-04-30T16:44:03","guid":{"rendered":"http:\/\/www.tecn.upf.edu\/~jagenjo\/blog2\/?p=41"},"modified":"2010-04-30T16:44:03","modified_gmt":"2010-04-30T16:44:03","slug":"infografia-i-practica-1-opengl-y-primitivas","status":"publish","type":"post","link":"https:\/\/tamats.com\/upf\/?p=41","title":{"rendered":"Infograf\u00eda I: Pr\u00e1ctica 1. OpenGL y primitivas"},"content":{"rendered":"<p>Esta pr\u00e1ctica pretende ser una toma de contacto con el entorno de trabajo de la asignatura.<\/p>\n<p>El alumno aprender\u00e1 a compilar con el framework de la asignatura usando librerias externas tales como OpenGL y deber\u00e1 pintar una escena 2D usando dichas primitivas.<\/p>\n<h3><!--more--><\/h3>\n<h3>Material<\/h3>\n<ul>\n<li><a href=\"http:\/\/docs.google.com\/present\/edit?id=dg932qn8_14c4mhrmhp\" target=\"_blank\">Slides introducci\u00f3n a OpenGL<\/a><\/li>\n<li><a href=\"http:\/\/docs.google.com\/present\/view?id=dg932qn8_130dmhkf5g6\" target=\"_blank\">Slides sobre c\u00f3mo compilar con librerias externas<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/present\/view?id=dg932qn8_201f3wvbzfw\">Slides sobre c\u00f3mo compilar con Visual Studio 2005<\/a><\/li>\n<li><a href=\"uploads\/practicas\/framework_prac1.cpp\" target=\"_blank\">Framework de la pr\u00e1ctica 1<\/a><\/li>\n<\/ul>\n<h3>Requisitos<\/h3>\n<p>Como ejercicio los alumnos deberan programar una aplicacion que pinte una escena en pantalla usando las primitivas b\u00e1sicas explicadas.<\/p>\n<ul>\n<li>Codigo en C o C++ de un dibujo original:\n<ul>\n<li>Utilizar <strong>al menos 3 primitivas distintas de OpenGL<\/strong> y pintarlas a la vez.<\/li>\n<li>Encapsular diferentes partes del dibujo de la escena en funciones separadas.<\/li>\n<li>Utilizar bucles (for, while, etc) para realizar cosas procedurales.<\/li>\n<li>Permitir cierta interactividad por parte del usuario (una tecla para cambiar algo de la escena).<\/li>\n<\/ul>\n<\/li>\n<li>Opcional\n<ul>\n<li>Que aparezca un c\u00edrculo (para ello tendreis que definir los vertices usando las funciones trigonom\u00e9tricas sin y cos).<\/li>\n<li>Animaci\u00f3n (que la escena vaya cambiando aunque el usuario no haga nada, p.e., desplazando objetos)<\/li>\n<li>Se valorar\u00e1 la creatividad y el uso inteligente del c\u00f3digo, <strong>no la capacidad artistica basada en a\u00f1adir a mano cientos de puntos<\/strong>.<\/li>\n<li>Podeis incluir en el zip de la entrega un screenshot de vuestra aplicaci\u00f3n si estais lo suficientemente orgullosos de vuestro trabajo como para que lo vean otros.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Fallos comunes<\/h3>\n<ul class=\"bad\">\n<li>No crear un <strong>proyecto Win32 de consola<\/strong>, o no elegir la opcion Proyecto Vacio. Esto puede dar errores extra\u00f1os al ejecutar la aplicaci\u00f3n como problemas con los precompiled headers o que no tenga la macro WIN32 definida en la configuracion del proyecto.<\/li>\n<li>Usar funciones kilometricas con cientos de vertices puestos a mano.<\/li>\n<li>glBegins sin cerrar.<\/li>\n<li>Renderizar fuera del bucle de render. Lo que se hace despues del swapbuffers ya no se ver\u00e1.<\/li>\n<li>Demasiados Swapbuffers, solo debe haber uno, al final del bucle de render.<\/li>\n<li>Circulos con mas vertices de los necesarios, acotar el iterador para que solo se pinte una vuelta.<\/li>\n<li><strong>Dividir por enteros<\/strong> esperando resultados decimales. Recordad, en C: 1\/2 == 0 pero 1\/2.0 == 0.5<\/li>\n<li>incluir glut.h en lugar de GL\/glut.h<\/li>\n<\/ul>\n<h3>Ejemplos<\/h3>\n<p><img decoding=\"async\" src=\"wp-content\/images\/info1_prac1.jpg\"\/><\/p>\n<div class=\"legend\">Valor: <strong>6 puntos<\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Esta pr\u00e1ctica pretende ser una toma de contacto con el entorno de trabajo de la asignatura. El alumno aprender\u00e1 a compilar con el framework de la asignatura usando librerias externas tales como OpenGL y deber\u00e1 pintar una escena 2D usando dichas primitivas.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/41"}],"collection":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41"}],"version-history":[{"count":0,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}