API o Libreras grficas, qu son y para qu sirven
Conozcamos un poco al hroe silencioso que ayuda a programadores y jugadores por igual.
Las interfaces de programacin de aplicaciones (API) o libreras grficas/bibliotecas grficas, llevan con nosotros mucho tiempo y han facilitado la labor de programadores desde su creacin. En ocasiones hemos hablado sobre ellas, pero nunca hemos escrito sobre sus cualidades y caractersticas. Ese precisamente es el objetivo de este especial, dar a conocer la razn de ser de uno de los elementos que articulan el desarrollo de las obras o videojuegos que tanto disfrutamos.
I. El puente entre el hombre y la mquina
Las libreras grficas no son ms que un compendio de herramientas que permiten a un programador hacer uso de los recursos que ofrece el hardware en una plataforma a travs de un software. En el caso de los videojuegos, que es el que nos compete, una librera se encargar de facilitar al programador la labor de pedirle al hardware los recursos para renderizar grficos y efectos en tu dispositivo y generar as imgenes.
Ejemplo de lenguaje de ensamblador (parte izquierda del texto).
La ayuda que ofrecen viene del nivel de abstraccin con respecto al lenguaje de la mquina, al que podramos llamar «el idioma que hablan tus componentes» por entenderlo de alguna forma. Cada ensambladora usa el suyo propio, pero la librera permite trabajar con ellos independientemente del lenguaje que usen, haciendo de puente entre usuario y componente.
II. «Sr. procesador, no entiendo una palabra de lo que me dice»
Siendo ms precisos, el lenguaje de mquina es un sistema de cdigos e instrucciones que un circuito microprogramable (como un procesador) entiende de forma directa. Tienen su base en el lenguaje binario, y resultan terriblemente obtusos para un humano que no los conozca y estudie a fondo.
Por eso hablbamos antes de idiomas. Entendindolo de forma abstracta, nosotros nos comunicamos en una lengua diferente y de un modo diferente a, por ejemplo, un procesador. Y aqu es donde entran las libreras, que hacen precisamente eso, abstraer el fro y lgico lenguaje de mquina para hacerlo ms cercano, humano y fcil de trabajar con l. Una suerte de traductor o intrprete de dos lenguajes (o un compilador).
Cuando estas herramientas se alejen ms del lenguaje de la mquina y se parezcan ms a algo que podamos reconocer fcilmente, estaremos hablando de lenguaje de alto nivel, refirindose al nivel de abstraccin del lenguaje. Por el contrario, hablaremos de lenguaje de bajo nivel cuanto menos abstracto y ms parecido al lenguaje original de la mquina sea el modo de operar de las libreras.
III. De arriba abajo
Como hemos dicho, las libreras de alto nivel son ms sencillas de utilizar para una persona y permiten llevar instrucciones a diversas plataformas independientemente del lenguaje que utilicen, pero esto trae consigo un inconveniente.
Volvamos a la metfora del idioma y el traductor. Imaginad una mesa llena de objetos y a una persona pidiendo uno de estos a otra en orden, pero muy rpidamente y en un idioma muy diferente al suyo propio a travs de un tercero que hace de intrprete Cmo sera la escena? Habr intrpretes ms rpidos y ms lentos, pero seguro que todos hemos pensado en el tpico parn entre lo que dice uno y lo que hace finalmente el otro.
Con las API sucede lo mismo, cuanto mayor es la abstraccin ms tiempo necesita nuestro hardware para entender que debe hacer cuando se lo requerimos. Sin embargo, las libreras de bajo nivel hablan un idioma ms parecido al suyo, reduciendo la informacin que debe pasar de un lenguaje a otro, por lo que se tarda menos tiempo en procesar una orden y se realiza ms rpido y con menos recursos.
Vulkan, una de las API ms conocidos del momento.
A pesar de esto, la dificultad aadida de la que hemos hablado con los lenguajes de bajo nivel existe y es ms difcil trabajar con ellos. Actualmente, las libreras de bajo nivel estn viviendo un desarrollo importante en el mundo de los videojuegos, y algunas de ellas como DirectX 12 o Vulkan tienen herramientas que permiten trabajar ms fcilmente a bajo nivel sin perder esa eficiencia extra.
Adems de estas dos ya mencionadas, merecen una mencin libreras como OpenGL, Mantle o GNM/GNMX. OpenGL fue la primera gran librera multiplataforma, an hoy enormemente extendida. Mantle fue la precursora de la actual Vulkan, una propuesta de AMD que, si bien no lleg a cuajar, sembr junto a OpenGL la semilla de lo que conocemos actualmente como Vulkan. GNM y GNMX tal vez suene menos, pero se trata de las libreras usadas para la consola de Sony, algo as como su equivalente a DirectX 12 para Xbox One.
IV. Estn relacionadas con los motores grficos?Por supuesto, un motor grfico es una plataforma diseada especialmente para videojuegos, y est preparada para usar de forma sencilla los recursos de los que requieren los mismos. Los motores grficos se apoyan en las libreras para funcionar correctamente, y le aaden una capa ms de abstraccin a la hora de operar con ellas.
Las Blueprint de Unreal Engine 4 aplican una interfaz grfica a los scripts. Un nivel de abstraccin altsimo con respecto al lenguaje de mquina.
Sea como fuere, esperamos que esta pequea entrada haya conseguido el objetivo que se propona, que es acercar un poco conceptos como libreras grficas a usuarios que desconocen esos nombres y an as les influyen hasta cierta medida. Es una entrada sencilla y escueta, pero es la naturaleza con la que ha sido concebida y esperamos que os haya gustado Hasta la prxima!
Ms sobre: Libreras grficas, Directx y Vulkan.