"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"
Programacion de videojuegos
Inicio La librería de UnSitioWeb - libUSW
Sábado 03 de Junio del 2023

Menu principal
Colaborar (con PayPal)

Para continuar con el trabajo de esta Web y poder pagar el hosting, viene bien la ayuda que sea. Gracias a todos.

Importe: 

Ultimas descargas
19.Jan

Clase que permite dibujar texto en OpenGL con mucha facilidad.Usa FreeType2.Para ver que hace y c...


libUSW - La libreria UnSitioWeb Imprimir Correo electrónico
Videojuegos - Las cosas de UnSitioWeb
Escrito por Vicengetorix   

 

La librería de UnSitioWeb: libUSW.

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.

El supuesto es este.

Voy a probar si me sale un algoritmo para … no se … por ejemplo pintar sombras planares, con OpenGL que he visto navegando por internet y me parece interesante. Abro el IDE que uso normalmente y me dispongo a inicializar ventana, inicializar OpenGL, si necesito texto tengo que montarme las funciones necesarias, si necesito texturas, tres cuartos de lo mismo. Si, pensareis, esas funciones las tengo ya hechas después de haber seguido el curso de programación de juegos de UnSitioWeb. Sin embargo sigue dando pereza juntarlo todo y, no nos engañemos, no siempre somos tan ordenados y a veces tenemos las funciones en diferentes proyectos, con modificaciones para esto o lo otro, que no nos sirven ahora, …

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 podría incluir la carga de modelos 3D. Esto se debe pensar bien, ya que el tema es complicado y convertiría a libUSW en algo más de lo que es, y no sé si quiero.


Agradecimientos:

Tres son las fuentes externas que he usado en esta librería:

  • Para cargar texturas: SOIL, magnifica y gratuita librería de Jonathan Dummer.

  • Para soporte de ficheros zip: zlib, cuya licencia permite su uso para todo y unzip de Gilles Vollant, con la misma licencia que zib.

  • Para fuentes y texto: lfontrenderer de Lev Povalahev, libre para su uso, y “fonttex.exe†para generar los ficheros de fuentes, del mismo autor.

A los autores de estos magníficos trabajos, ¡ gracias !.


Descarga e instalación (si se le puede llamar así).

Se puede descargar la librería libUSW en un solo fichero para Dev-C++ (MinGW) y para VC++ 2005 Express (posiblemente funcione con VC++ 2008 también)

Para Dev-C++ las librerías que se incluyen son libsoil.a, libz.a y libunzip.a, todas necesarias para que funcione libUSW.a, la librería de UnSitioWeb, también incluida (como no). Para VC++ los ficheros de biblioteca se han compactado en uno que incluye todas las necesarias, incluidas las de OpenGL y GLU, que ya no hara falta añadir al proyecto. El fichero es USW.lib.

También se incluye, como es lógico, el fichero de cabecera uswlib.hpp.

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.

La instalación no es más que la inclusión en el proyecto de la o las bibliotecas y la inclusión del fichero de cabecera al principio del programa en su directiva #include correspondiente. También habra que incluir en el proyecto las bibliotecas de OpenGL y GLU en el caso de Dev-C++.

 

Documentación de uso.

El programa mínimo con libUSW sería así:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// 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.

Programa de ejemplo de uso de libUSW.


Aquí esta la cabecera de la librería. En la parte pública de las clases se explica el uso de todas las funciones.
uswlib.hpp.

 

 



¡Sólo los usuarios registrados pueden escribir comentarios!
+/- Comentarios
Buscar
bakadeshisho  - La Libreria Se Completara?   |Registered |20-03-2015 20:42:05
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.
Juan Andrés   |Registered |28-10-2009 14:49:16
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.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 


Banner
Spanish Chinese (Simplified) English French German Japanese Portuguese Russian