Escuela Técnica Superior de Ingeniería

 

Grado en Ingeniería Informática

Animación por Ordenador

Curso 2025/2026

 

Práctica 1a

Vulkan sobre MS-Windows

 

Objetivos

 

El objetivo de este primer proyecto es crear un proyecto vacío y configurar las propiedades de la aplicación gráfica.

 

 

Creación de un proyecto de aplicación gráfica

 

A lo largo de estas prácticas vamos a utilizar VisualStudio 2022 y Vulkan SDK 1.4.313.2 como entornos de desarrollo de aplicaciones gráficas para MS-Windows. El primer paso para crear la aplicación es crear un nuevo proyecto en lenguaje C++. La siguiente figura muestra la ventana de creación del nuevo proyecto. Seleccionaremos la creación de un proyecto vacío.

Figura1

Al aceptar el tipo de proyecto se abre una ventana de configuración del proyecto donde seleccionaremos el nombre del proyecto y su ubicación.

Figura2

La plantilla de proyecto seleccionada no contiene ningún archivo de código inicial. El primer paso va a ser crear un primer archivo de código. Para eso hay que seleccionar el menú sobre la carpeta de archivos de orígen (botón derecho) y seleccionar la opción de agregar un nuevo elemento.

Figura3

El primer fichero de código que vamos a añadir es el fichero "main.cpp" donde incluiremos la función main() de entrada de la aplicación..

Figura4

Para poder utilizar Vulkan y otras bibliotecas auxiliares, como GLFW, GLM y STBI, es necesario realizar algunas modificaciones a las propiedades del proyecto. Las propiedades del proyecto se pueden editar seleccionando el último elemento del menú "Proyecto".

Figura5

Las bibliotecas auxiliares se han incluido en el código de la práctica en el directorio C:\GameEngine\Tools\. El primer paso es añadir los directorios adecuados como directorios de archivos de inclusión (que se utilizan para buscar los archivos indicados por las macros #include) y directorios de archivos de bibliotecas (donde se buscarán los ficheros .lib de estas herramientas).

Para añadir los directorios de inclusión de estas herramientas se selecciona la opción "General" dentro del grupo de propiedades de C/C++ y se pulsa en "<Editar>" sobre el campo "Directorios de inclusión adicionales".

Figura6

Los directorios de inclusión a añadir corresponden a las carpetas Include de las herramientas Vulkan, GLFW, GLM y STBI.

Figura7

Para añadir los directorios de bibliotecas de estas herramientas se selecciona la opción "General" dentro del grupo de propiedades del vinculador y se pulsa en "<Editar>" sobre el campo "Directorios de bibliotecas adicionales".

Figura8

Los directorios de bibliotecas a añadir corresponden a la carpeta lib-vc2022 de la herramienta GLFW y la carpeta Lib de la instalación de Vulkan. Las bibliotecas GLM y STBI se distribuyen como código fuente y solo requieren adaptar el directorio de inclusión.

Figura9

El siguiente paso consiste en indicar que nuestra aplicación va a utilizar las bibliotecas de Vulkan (vulkan-1.lib) y de GLFW (glfw3.lib). Para ello es necesario expandir la opción Entrada dentro del grupo de propiedades de vinculador y pulsar en "<Editar>" sobre el campo Dependencias adicionales como muestra la siguiente figura.

Figura10

En la ventana de edición de dependencias adicionales hay que añadir las librerías "vulkan-1.lib" y "glfw3.lib".

Figura11

Para completar la configuración del proyecto hay que indicar que la versión del lenguaje a utilizar es el estándar ISO C++17. Esta versión se define en la opción Idioma del grupo de propiedades de C/C++, seleccionando esta versión en el campo Estándar de lenguaje C++.

Figura12

Un detalle importante para comenzar a programar nuestro proyecto es seleccionar la plataforma x64 como plataforma de compilación.

Figura13

Para terminar vamos a asociar un icono a la aplicación que queremos crear. Para eso es necesario abrir la vista de recursos del proyecto (ventana superior dereha) y añadir un nuevo recurso.

Figura14

El recurso a agregar es de tipo Icono. Para agregar el icono de la aplicación hay que seleccionar "Importar..." y elegir el fichero de icono que queremos para nuestra aplicación gráfica.

Figura15

El código de la práctica incluye el directorio "C:/GameEngine/Icon" con un fichero denominado "toy.ico" que contiene un icono en forma de caballito balancín.

Figura16

Una vez configurado todo el proyecto ya es posible compilarlo y obtener la primera versión de nuestra aplicación, que de momento no hace nada.

 

 

Generación de la aplicación gráfica

 

Una vez configurado el proyecto vamos a comenzar a desarrollar el código de la aplicación. El primer paso es programar la función principal, incluida en el fichero main.cpp.

#include "GEApplication.h"
#include <iostream>
#include <stdexcept>

//
// PROYECTO: Project1a
//
// DESCRIPCIÓN: Creación de un proyecto vacío.
//
int main() 
{
  GEApplication app;

  try
  {
    app.run();
  }
  catch (const std::exception& e)
  {
    std::cerr << e.what() << std::endl;
    return EXIT_FAILURE;
  }

  return EXIT_SUCCESS;
}

Este método principal se limita a crear un objeto de la clase  GEApplication y a lanzar la ejecución.

 

 

La clase GEApplication

 

La clase GEApplication es la encargada de crear y gestionar la ventana sobre la que generaremos los gráficos. Tiene un único método público run() encargado de lanzar la ejecución de la aplicación. A continuación se muestra la declaración de esta clase.

#pragma once

//
// CLASE: GEApplication
//
// DESCRIPCIÓN: Clase que crea y lanza la aplicación gráfica.
//
class GEApplication
{
public:
  void run();
};

El código de la clase se limita a desarrollar el método run() que, de momento, no tiene contenido.

#include "GEApplication.h"

//
// FUNCIÓN: GEApplication::run()
//
// PROPÓSITO: Ejecuta la aplicación
//
void GEApplication::run()
{
}

En los próximos proyectos se irá ampliando el código de esta clase y se añadirán nuevas clases a la aplicación.