#include "vkn/vulkan_api.h" #include "vkn/vulkan_window.h" #include "vkn/wrapper/buffer.h" #include "vkn/thread/buffer_worker.h" #include "vkn/thread/command_worker.h" #include "render/asset/mesh.h" namespace vkn { VulkanAPI::VulkanAPI() : window(*VulkanWindow::Ptr()), backend(VulkanEngineName) { } void VulkanAPI::Init() { } void VulkanAPI::Shutdown() { } void VulkanAPI::SetStaticMesh(Mesh& mesh) { auto& Indices = mesh.GetIndices(); auto& Vertices = mesh.GetVertices(); MeshVAO& VAO = MeshTable[mesh.GetGuid()]; VAO.indexCount = Indices.size(); VAO.vertexCount = Vertices.size(); Buffer indexBuffer{}; indexBuffer.ppBuffer = &VAO.indexBuffer; indexBuffer.pCpuData = Indices.data(); indexBuffer.size = sizeof(decltype(Indices[0])) * Indices.size(); indexBuffer.usage = VK_BUFFER_USAGE_INDEX_BUFFER_BIT; Backend::TransferWorker->Invoke(indexBuffer); Buffer vertexBuffer{}; vertexBuffer.ppBuffer = &VAO.vertexBuffer; vertexBuffer.pCpuData = Vertices.data(); vertexBuffer.size = Vertices.data_size(); vertexBuffer.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT; Backend::TransferWorker->Invoke(vertexBuffer); } void VulkanAPI::DrawStaticMesh(Mesh& mesh) { } void VulkanAPI::LoadShader(Shader& shader) { } void VulkanAPI::BeginFrame() { } void VulkanAPI::EndFrame() { } }