31 mesh(std::span<::vk::vertex_input> p_vertices,
32 std::span<uint32_t> p_indices);
33 mesh(
const std::filesystem::path& p_filename,
bool p_flip =
false);
38 void draw(
const VkCommandBuffer& p_command_buffer);
45 void add_specular(
const std::filesystem::path& p_path);
47 [[nodiscard]] ::vk::sample_image diffuse()
const {
48 return m_diffuse.image();
50 [[nodiscard]] ::vk::sample_image specular()
const {
51 return m_specular.image();
55 [[nodiscard]]
bool loaded()
const {
return m_model_loaded; }
57 [[nodiscard]]
bool diffuse_loaded()
const {
return m_diffuse.loaded(); }
58 [[nodiscard]]
bool specular_loaded()
const {
59 return m_specular.loaded();
62 void set_flip(
bool p_flip) { m_flip = p_flip; }
65 void load_obj(
const std::filesystem::path& p_filename);
68 vk_physical_driver m_physical;
69 VkDevice m_device =
nullptr;
70 ::vk::texture m_diffuse;
71 ::vk::texture m_specular;
72 ::vk::vertex_buffer m_vbo{};
73 ::vk::index_buffer m_ibo{};
74 ::vk::uniform_buffer m_geoemtry_ubo;
75 ::vk::uniform_buffer m_material_ubo;
76 bool m_model_loaded =
false;