47 lines
1.1 KiB
C++

#pragma once
#include "volk/volk.h"
#include "minecraft/vulkan/per_world.h"
namespace minecraft::vulkan {
struct vulkan {
struct {
VkDeviceSize jointWeightOffset;
VkDeviceSize indexOffset;
VkBuffer buffer;
VkDeviceMemory memory;
} vertexIndex;
// externally initialized, opaque handle
VkInstance instance;
VkDevice device;
VkQueue queue;
VkCommandPool commandPool;
// externally initialized, structures
VkPhysicalDeviceProperties physicalDeviceProperties;
VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties;
// externally initialized, enum
VkFormat colorFormat;
VkFormat depthFormat;
//
// method initialized
//
VkPipelineLayout pipelineLayout;
VkShaderModule shaderModule;
VkPipeline pipeline;
per_world * worlds;
void init();
void load_vertex_index_buffer(char const * vertex_filename,
char const * index_filename);
void load_shader();
void create_pipeline();
void load_worlds();
void draw(VkCommandBuffer commandBuffer);
};
}