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-30 22:09:05 +08:00
|
|
|
void VulkanAPI::BeginFrame()
|
|
|
|
|
{
|
2024-09-01 22:32:29 +08:00
|
|
|
window.Aquire(context);
|
2024-08-30 22:09:05 +08:00
|
|
|
}
|
|
|
|
|
void VulkanAPI::EndFrame()
|
|
|
|
|
{
|
2024-09-01 22:32:29 +08:00
|
|
|
window.Present(context);
|
2024-08-30 22:09:05 +08:00
|
|
|
}
|
2024-08-17 18:01:21 +08:00
|
|
|
}
|