zengine/engine/modules/render/vulkan/src/vulkan_api.cpp

50 lines
1.2 KiB
C++
Raw Normal View History

2024-08-17 18:01:21 +08:00
#include "vkn/vulkan_api.h"
#include "vkn/vulkan_window.h"
2024-08-27 20:21:32 +08:00
#include "vkn/wrapper/buffer.h"
#include "vkn/thread/buffer_worker.h"
#include "vkn/thread/command_worker.h"
2024-08-25 22:41:25 +08:00
#include "render/asset/mesh.h"
2024-08-17 18:01:21 +08:00
namespace vkn {
2024-08-23 22:13:05 +08:00
VulkanAPI::VulkanAPI() : window(*VulkanWindow::Ptr()), backend(VulkanEngineName)
2024-08-17 18:01:21 +08:00
{
2024-08-23 22:13:05 +08:00
2024-08-17 18:01:21 +08:00
}
void VulkanAPI::Init()
{
}
void VulkanAPI::Shutdown()
{
}
2024-08-25 22:41:25 +08:00
void VulkanAPI::SetStaticMesh(Mesh& mesh)
{
2024-08-27 20:21:32 +08:00
auto& Indices = mesh.GetIndices();
auto& Vertices = mesh.GetVertices();
MeshVAO& VAO = MeshTable[mesh.GetGuid()];
VAO.indexCount = Indices.size();
VAO.vertexCount = Vertices.size();
2024-08-25 22:41:25 +08:00
2024-08-27 20:21:32 +08:00
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);
2024-08-25 22:41:25 +08:00
}
void VulkanAPI::DrawStaticMesh(Mesh& mesh)
{
2024-08-27 20:21:32 +08:00
2024-08-25 22:41:25 +08:00
}
void VulkanAPI::LoadShader(Shader& shader)
{
}
2024-08-17 18:01:21 +08:00
}