"Ningún juego dura tanto hasta que te lo terminas como el que te programas tú mismo, ninguno te absorbe tanto y ninguno te produce tanta satisfacción cuando lo has acabado"
La primera librerÃa de UnSitioWeb, pensada para facilitar la vida al programador y montarse un programa OpenGL a la velocidad del rayo.
Es básicamente, la inicialización vista en el curso de programación de juegos, la carga de texturas y el uso de fuentes texturizadas (mas rápidas que los bitmap fonts), todo con alguna mejora y pasado por el filtro de la programación orientada a objetos.
Está pensada para hacer un programa en el que con 7 lineas de código hayamos inicializado la ventana, OpenGL y dispongamos de carga de texturas y su presentación en pantalla, y texto en pantalla; y todo ello sin habernos despeinado.
Con la librerÃa de UnSitioWeb todas estas labores previas se reducen a 7 lineas de código. La librerÃa esta pensada para ser fácil de usar y nos da luego algunas facilidades para ciertas labores habituales en la programación gráfica y de juegos.
Funciones de libUSW.
Inicializado automático de programa Windows, ventana y OpenGL (con o sin stencil buffer).
Ejecución del programa en una ventana de tamaño fijo (no se puede redimensionar con el ratón, solo por programa) o a pantalla completa, cambiando o no la resolución de pantalla.
Permite poner icono personalizado a la ventana.
Cambio de la velocidad deseada del programa (los Frames Por Segundo) y consulta de la velocidad real.
Consulta inmediata del estado del teclado.
Consulta inmediata de la situación del ratón.
Gestión facilÃsima de interruptores o banderas asociadas a teclas del teclado o ratón, con control para que nuestro programa sepa que solo ha sido UNA pulsación.
Gestor de texturas con detección para no cargar texturas repetidas y olvidarnos de tener que borrarlas al terminar el programa. Carga BMP, PNG, JPG, TGA y DDS (ver documentación de librerÃa SOIL, usada en libUSW). Acomoda el tamaño a potencia de 2 si no lo es y permite generar mipmaps e invertir la imagen (en el eje Y). Permite la carga de ficheros desde dentro de un fichero ZIP.
Escritura de texto al estilo “printf†y usando “textured fontsâ€, fuentes en textura. Permite cambiar color y tamaño, y usar varias fuentes distintas a la vez. La fuentes se pueden crear con el programa “fonttex.exe†de Lev Povalahev, cuya clase “lfontrenderer†es usada internamente con algunas modificaciones por libUSW. Permite cargar las fuentes desde dentro de un fichero ZIP o desde un recurso.
Gestión de fichero de log, muy útil para poder cotillear datos de la ejecución del programa. Se puede habilitar o no, y usarla es tan facil como usar una función al estilo “printf†que escribira lo que queramos en un fichero de texto (log.txt) en disco. Incluye fecha y hora en todas las entradas del fichero.
Pequeña clase para presentar imágenes en pantalla de forma fácil e inmediata con el tamaño y posición que queramos.
Â
Funciones que en el futuro se pretenden implementar en libUSW.
Controles tipo botón, etiqueta, cuadro de texto, inputbox, listas desplegables, … la posibilidad de crear un interface gráfico de usuario de forma simple en nuestro programa (para usar otras librerÃas hay que hacer un master).
Inclusión de extensiones y versiones de OpenGL .
Puede que se implemente la posibilidad del uso de múltiples funciones de bucle principal para diferentes pantallas del programa.
Se completa con los ficheros de licencia, un directorio con un programa de ejemplo y algunos ficheros para este programa como algún gráfico y varios ficheros de fuentes, y el programa "fonttex.exe" para crear más ficheros de fuentes.
// Inclusion de la cabecera. // Incluye las de OpenGL y GLU, // las de windows y alguna mas. #include "uswlib.hpp" Â // La inicializacion propiamente dicha. // Con el objeto que creo ahora es con el que // trabajare el resto del programa. appUSW ap; Â // Funcion para inicializar . void IniciaApp() { // ... el codigo que sea ... } Â // Funcion del bucle principal void Bucle() { // ... el codigo que sea ... } Â // Funcion para terminar programa void Cierre() { // ... el codigo que sea ... } Â // Funcion main de Windows - WinMain. // Empieza el programa. int WinMain(HINSTANCE , HINSTANCE ,LPSTR ,int) { // Indico al objeto principal cuales son las // funciones para cada cosa. ap.PonFuncionInicia(IniciaApp); ap.PonFuncionPrincipal(Bucle); ap.PonFuncionCierre(Cierre); Â // Esta funcion hace que nuestro programa empiece. // Estara ejecutandose durante todo el programa // repitiendo continuamente nuestra funcion Bucle. // Terminara solo si se presiona ESC o se le dice // que lo haga desde el programa. // Al principio ejecuta la funcion de inicio y al // terminar ejecuta la de cierre. ap.Corre(); }
Si dejamos las funciones de inicio, bucle y cierre vacÃas o no las definimos, este programa presentarÃa una ventana en negro llamada "UnSitioWeb.com" que podrÃamos cerrar con el ratón en el aspa o presionando ESCape.
Â
Aquà pongo el código de un programa de ejemplo para ilustrar los usos varios de la librerÃa. En el programa he procurado que se vea como se hace la mayorÃa de las cosas que hace libUSW.
Me Gustaria Saber Si Se Completara La Libreria, Si Se Agregaran Alguna Clase Para Poner GUI...
Bueno Eso Seria Mi Consulta...
A Todo Esto Esta Muy Buena La Libreria.
P.D: Podiras Compilarla Nuevamente, No La Pude Usar En Visual Studio 2010.
Me parece genial la libreria, seguro que me resultara muy util. (y ahorrarse faena siempre viene bien XD)
Vicengetorix
|85.53.209.xxx
|28-10-2009 16:51:07
Tienes razón en que no se debe trabajar más de la cuenta pero conviene saber como se hacen esas cosas cuando uno está aprendiendo. Es solo una recomendación.