10-29-2018, 07:51 AM
Buenas, he estado leyendo el hilo sobre FreeBasic.
Conozco el lenguaje y el editor FBIde, los utilicé hace tiempo ya que mi primer lenguaje fue el BASIC de Spectrum y luego el GW-BASIC de PC, así que me daba cierta nostalgia :-)
La exigencia de tener SDL2 incluso aunque no se utilice la ventana integrada en Tilengine, sino que se haga render externo tal como han hecho en FreeBasic, es debido a que SDL2 se enlaza de forma estática, que es la forma más fácil y habitual de hacerlo. En este caso, el sistema operativo la carga antes de ejecutar el resto del programa, independientemente de si luego se utiliza o no. Hay otra forma de hacerlo, mediante cagra dinámica , en que la biblioteca en cuestión se carga en tiempo de ejecución justo cuando se va a necesitar, y se obtienen los punteros de las funciones que se necesitan. Es una forma más elegante, pero también más laboriosa y no es multiplataforma (se hace diferente en Windows y en Linux), pues no es el sistema operativo sino el propio programa el encargado de cargar la biblioteca y las funciones. Pero sí que me parece interesante poder eliminar esa dependencia si realmente no se utiliza. No sólo para FreeBAsic, sino en general.
En cuanto a una versión específica de Tilengine para FreeBasic, es algo que no tiene sentido, de la misma forma que no hay una versión específica para Python o para C#. La biblioteca siempre es la misma, sólo que se añade una capa de adaptación (binding / wrapper) para poder usar la biblioteca desde un lenguaje diferente. Eso es lo que hace el archivo Tilengine.bi, es un port directo de las cabecera de Tilengine.h pasado a la sintaxis de FreeBasic.
Conozco el lenguaje y el editor FBIde, los utilicé hace tiempo ya que mi primer lenguaje fue el BASIC de Spectrum y luego el GW-BASIC de PC, así que me daba cierta nostalgia :-)
La exigencia de tener SDL2 incluso aunque no se utilice la ventana integrada en Tilengine, sino que se haga render externo tal como han hecho en FreeBasic, es debido a que SDL2 se enlaza de forma estática, que es la forma más fácil y habitual de hacerlo. En este caso, el sistema operativo la carga antes de ejecutar el resto del programa, independientemente de si luego se utiliza o no. Hay otra forma de hacerlo, mediante cagra dinámica , en que la biblioteca en cuestión se carga en tiempo de ejecución justo cuando se va a necesitar, y se obtienen los punteros de las funciones que se necesitan. Es una forma más elegante, pero también más laboriosa y no es multiplataforma (se hace diferente en Windows y en Linux), pues no es el sistema operativo sino el propio programa el encargado de cargar la biblioteca y las funciones. Pero sí que me parece interesante poder eliminar esa dependencia si realmente no se utiliza. No sólo para FreeBAsic, sino en general.
En cuanto a una versión específica de Tilengine para FreeBasic, es algo que no tiene sentido, de la misma forma que no hay una versión específica para Python o para C#. La biblioteca siempre es la misma, sólo que se añade una capa de adaptación (binding / wrapper) para poder usar la biblioteca desde un lenguaje diferente. Eso es lo que hace el archivo Tilengine.bi, es un port directo de las cabecera de Tilengine.h pasado a la sintaxis de FreeBasic.