Program Listing for File ObjLoader.hpp

Program Listing for File ObjLoader.hpp#

Return to documentation for file (Src/GraphicsEngineVulkan/scene/ObjLoader.hpp)

#pragma once
#include <vulkan/vulkan.hpp>

#include <memory>

#include "Model.hpp"

import kataglyphis.vulkan.obj_material;
import kataglyphis.vulkan.vertex;

namespace Kataglyphis {
class ObjLoader
{
  public:
    ObjLoader(VulkanDevice *device, vk::Queue transfer_queue, vk::CommandPool command_pool);

    std::shared_ptr<Model> loadModel(const std::string &modelFile);

  private:
    Kataglyphis::VulkanDevice *device;
    vk::Queue transfer_queue;
    vk::CommandPool command_pool;

    std::vector<Vertex> vertices;
    std::vector<unsigned int> indices;
    std::vector<ObjMaterial> materials;
    std::vector<unsigned int> materialIndex;
    std::vector<std::string> textures;

    std::vector<std::string> loadTexturesAndMaterials(const std::string &modelFile);
    void loadVertices(const std::string &fileName);
};
}// namespace Kataglyphis