Initializing Vulkan Context
This commit is contained in:
@@ -89,6 +89,9 @@ add_subdirectory(hydra)
|
|||||||
include_directories(hydra/include)
|
include_directories(hydra/include)
|
||||||
target_link_libraries(kraken hydra)
|
target_link_libraries(kraken hydra)
|
||||||
|
|
||||||
|
# ---- Vulkan ----
|
||||||
|
find_package(Vulkan REQUIRED)
|
||||||
|
target_link_libraries(kraken Vulkan::Vulkan)
|
||||||
|
|
||||||
# ---- OpenGL ----
|
# ---- OpenGL ----
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ const char *KRContext::extension_names[KRENGINE_NUM_EXTENSIONS] = {
|
|||||||
KRContext::log_callback *KRContext::s_log_callback = NULL;
|
KRContext::log_callback *KRContext::s_log_callback = NULL;
|
||||||
void *KRContext::s_log_callback_user_data = NULL;
|
void *KRContext::s_log_callback_user_data = NULL;
|
||||||
|
|
||||||
KRContext::KRContext() : m_streamer(*this)
|
KRContext::KRContext()
|
||||||
|
: m_streamer(*this)
|
||||||
|
, m_vulkanInstance(VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
m_streamingEnabled = false;
|
m_streamingEnabled = false;
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
@@ -282,8 +284,11 @@ void KRContext::loadResource(const std::string &file_name, KRDataBlock *data) {
|
|||||||
} else if(extension.compare("obj") == 0) {
|
} else if(extension.compare("obj") == 0) {
|
||||||
KRResource::LoadObj(*this, file_name);
|
KRResource::LoadObj(*this, file_name);
|
||||||
#if !TARGET_OS_IPHONE
|
#if !TARGET_OS_IPHONE
|
||||||
|
/*
|
||||||
|
// FINDME, TODO, HACK! - Uncomment
|
||||||
} else if(extension.compare("fbx") == 0) {
|
} else if(extension.compare("fbx") == 0) {
|
||||||
KRResource::LoadFbx(*this, file_name);
|
KRResource::LoadFbx(*this, file_name);
|
||||||
|
*/
|
||||||
} else if(extension.compare("blend") == 0) {
|
} else if(extension.compare("blend") == 0) {
|
||||||
KRResource::LoadBlenderScene(*this, file_name);
|
KRResource::LoadBlenderScene(*this, file_name);
|
||||||
#endif
|
#endif
|
||||||
@@ -448,4 +453,48 @@ void KRContext::receivedMemoryWarning()
|
|||||||
m_last_memory_warning_frame = m_current_frame;
|
m_last_memory_warning_frame = m_current_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KRContext::createDeviceContexts()
|
||||||
|
{
|
||||||
|
// initialize the VkApplicationInfo structure
|
||||||
|
VkApplicationInfo app_info = {};
|
||||||
|
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||||
|
app_info.pNext = NULL;
|
||||||
|
app_info.pApplicationName = "Test"; // TODO - Change Me!
|
||||||
|
app_info.applicationVersion = 1;
|
||||||
|
app_info.pEngineName = "Kraken Engine";
|
||||||
|
app_info.engineVersion = 1;
|
||||||
|
app_info.apiVersion = VK_API_VERSION_1_0;
|
||||||
|
|
||||||
|
|
||||||
|
// initialize the VkInstanceCreateInfo structure
|
||||||
|
VkInstanceCreateInfo inst_info = {};
|
||||||
|
inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
||||||
|
inst_info.pNext = NULL;
|
||||||
|
inst_info.flags = 0;
|
||||||
|
inst_info.pApplicationInfo = &app_info;
|
||||||
|
inst_info.enabledExtensionCount = 0;
|
||||||
|
inst_info.ppEnabledExtensionNames = NULL;
|
||||||
|
inst_info.enabledLayerCount = 0;
|
||||||
|
inst_info.ppEnabledLayerNames = NULL;
|
||||||
|
|
||||||
|
VkResult res = vkCreateInstance(&inst_info, NULL, &m_vulkanInstance);
|
||||||
|
if (res != VK_SUCCESS) {
|
||||||
|
destroyDeviceContexts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KRContext::destroyDeviceContexts()
|
||||||
|
{
|
||||||
|
if (m_vulkanInstance) != VK_NULL_HANDLE) {
|
||||||
|
vkDestroyInstance(m_vulkanInstance, NULL);
|
||||||
|
m_vulkanInstance = VK_NULL_HANDLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KRContext::activateStreamerContext()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -132,8 +132,9 @@ private:
|
|||||||
static void *s_log_callback_user_data;
|
static void *s_log_callback_user_data;
|
||||||
|
|
||||||
KRStreamer m_streamer;
|
KRStreamer m_streamer;
|
||||||
|
VkInstance m_vulkanInstance;
|
||||||
|
|
||||||
static void createDeviceContexts();
|
void createDeviceContexts();
|
||||||
void destroyDeviceContexts();
|
void destroyDeviceContexts();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ using std::unordered_map;
|
|||||||
using std::unordered_multimap;
|
using std::unordered_multimap;
|
||||||
using std::hash;
|
using std::hash;
|
||||||
|
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public:
|
|||||||
|
|
||||||
static std::vector<KRResource *> LoadObj(KRContext &context, const std::string& path);
|
static std::vector<KRResource *> LoadObj(KRContext &context, const std::string& path);
|
||||||
#if !TARGET_OS_IPHONE
|
#if !TARGET_OS_IPHONE
|
||||||
static void LoadFbx(KRContext &context, const std::string& path);
|
// static void LoadFbx(KRContext &context, const std::string& path); TODO, FINDME, HACK! - Uncomment
|
||||||
static std::vector<KRResource *> LoadBlenderScene(KRContext &context, const std::string& path);
|
static std::vector<KRResource *> LoadBlenderScene(KRContext &context, const std::string& path);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user