CONGE-2 working window on windows. Need to test on mac
This commit is contained in:
parent
b253c08bf8
commit
11b558f836
@ -21,6 +21,11 @@ find_package(glm REQUIRED)
|
|||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
find_package(Vulkan REQUIRED)
|
find_package(Vulkan REQUIRED)
|
||||||
|
|
||||||
|
IF (WIN32)
|
||||||
|
define_property(TARGET PROPERTY VK_PROTOTYPES )
|
||||||
|
define_property(TARGET PROPERTY VK_USE_PLATFORM_WIN32_KHR)
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_library(${PROJECT_NAME} STATIC ${HEADER_FILES} ${SOURCES_FILES})
|
add_library(${PROJECT_NAME} STATIC ${HEADER_FILES} ${SOURCES_FILES})
|
||||||
|
|
||||||
# Specify include directories
|
# Specify include directories
|
||||||
|
|||||||
@ -6,6 +6,13 @@
|
|||||||
|
|
||||||
namespace ConjureEngine {
|
namespace ConjureEngine {
|
||||||
Application::Application(const ApplicationInfo &applicationInfo): m_applicationInfo(applicationInfo) {
|
Application::Application(const ApplicationInfo &applicationInfo): m_applicationInfo(applicationInfo) {
|
||||||
|
// Fill the application information
|
||||||
|
m_vkAppInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||||
|
m_vkAppInfo.pApplicationName = applicationInfo.title.c_str();
|
||||||
|
m_vkAppInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||||
|
m_vkAppInfo.pEngineName = "Conjure Engine";
|
||||||
|
m_vkAppInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||||
|
m_vkAppInfo.apiVersion = VK_API_VERSION_1_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Application::Run() const { return 0; }
|
int Application::Run() const { return 0; }
|
||||||
|
|||||||
@ -9,7 +9,13 @@
|
|||||||
|
|
||||||
namespace ConjureEngine {
|
namespace ConjureEngine {
|
||||||
struct ApplicationInfo {
|
struct ApplicationInfo {
|
||||||
WindowInfo window{"", 0, 0, 0, 0};
|
std::string title;
|
||||||
|
WindowInfo window{
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Application {
|
class Application {
|
||||||
@ -25,5 +31,6 @@ namespace ConjureEngine {
|
|||||||
public:
|
public:
|
||||||
protected:
|
protected:
|
||||||
ApplicationInfo m_applicationInfo;
|
ApplicationInfo m_applicationInfo;
|
||||||
|
VkApplicationInfo m_vkAppInfo{};
|
||||||
};
|
};
|
||||||
} // ConjureEngine
|
} // ConjureEngine
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
#include "VulkanContext.h"
|
||||||
#include "Window.h"
|
#include "Window.h"
|
||||||
|
|||||||
@ -19,10 +19,4 @@
|
|||||||
|
|
||||||
// VULKAN
|
// VULKAN
|
||||||
#include "vulkan/vulkan.h"
|
#include "vulkan/vulkan.h"
|
||||||
#include "vulkan/vulkan_core.h"
|
#include "vulkan/vulkan_core.h"
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include "vulkan/vulkan_metal.h"
|
|
||||||
#elifdef __WINDOWS__
|
|
||||||
#include "vulkan/vulkan_win32.h"
|
|
||||||
#endif
|
|
||||||
@ -4,6 +4,13 @@
|
|||||||
|
|
||||||
#include "VulkanContext.h"
|
#include "VulkanContext.h"
|
||||||
|
|
||||||
|
#ifdef __WIN32__
|
||||||
|
// #include <vulkan/vulkan_win32.h>
|
||||||
|
#endif
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#include "vulkan/vulkan_metal.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace ConjureEngine {
|
namespace ConjureEngine {
|
||||||
VulkanContext::VulkanContext(SDL_Window* window, const VkApplicationInfo& appInfo) {
|
VulkanContext::VulkanContext(SDL_Window* window, const VkApplicationInfo& appInfo) {
|
||||||
// LOAD THE EXTENSIONS
|
// LOAD THE EXTENSIONS
|
||||||
@ -110,6 +117,10 @@ namespace ConjureEngine {
|
|||||||
vulkanInfos.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
vulkanInfos.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WIN32__
|
||||||
|
this->m_extensionNames.push_back("VK_KHR_win32_surface");
|
||||||
|
#endif
|
||||||
|
|
||||||
vulkanInfos.enabledExtensionCount = static_cast<uint32_t>(this->m_extensionNames.size());
|
vulkanInfos.enabledExtensionCount = static_cast<uint32_t>(this->m_extensionNames.size());
|
||||||
vulkanInfos.ppEnabledExtensionNames = this->m_extensionNames.data();
|
vulkanInfos.ppEnabledExtensionNames = this->m_extensionNames.data();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,29 +5,16 @@
|
|||||||
|
|
||||||
namespace ConjureEngine {
|
namespace ConjureEngine {
|
||||||
|
|
||||||
Window::Window(const WindowInfo& windowInfo)
|
Window::Window(const char* title, const WindowInfo& windowInfo)
|
||||||
{
|
{
|
||||||
// INIT WINDOW
|
// INIT WINDOW
|
||||||
SDL_Init(SDL_INIT_VIDEO);
|
SDL_Init(SDL_INIT_VIDEO);
|
||||||
SDL_Vulkan_LoadLibrary(nullptr);
|
SDL_Vulkan_LoadLibrary(nullptr);
|
||||||
m_window = SDL_CreateWindow(windowInfo.title.c_str(), 0, 0, windowInfo.width, windowInfo.height, SDL_WINDOW_SHOWN |SDL_WINDOW_VULKAN);
|
|
||||||
|
|
||||||
// Fill the application information
|
m_window = SDL_CreateWindow(title, 0, 32, windowInfo.width, windowInfo.height, SDL_WINDOW_SHOWN | SDL_WINDOW_VULKAN);
|
||||||
VkApplicationInfo appInfo{};
|
|
||||||
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
|
||||||
appInfo.pApplicationName = windowInfo.title.c_str();
|
|
||||||
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
|
||||||
appInfo.pEngineName = "Conjure Engine";
|
|
||||||
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
|
||||||
appInfo.apiVersion = VK_API_VERSION_1_0;
|
|
||||||
|
|
||||||
// INIT VULKAN
|
|
||||||
m_vulkanContext = new VulkanContext(m_window, appInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::~Window() {
|
Window::~Window() {
|
||||||
delete m_vulkanContext;
|
|
||||||
|
|
||||||
SDL_DestroyWindow(m_window);
|
SDL_DestroyWindow(m_window);
|
||||||
SDL_Vulkan_UnloadLibrary();
|
SDL_Vulkan_UnloadLibrary();
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
@ -35,13 +22,8 @@ namespace ConjureEngine {
|
|||||||
SDL_Log("Cleaned up with errors: %s", SDL_GetError());
|
SDL_Log("Cleaned up with errors: %s", SDL_GetError());
|
||||||
}
|
}
|
||||||
|
|
||||||
const SDL_Window* Window::GetWindow() const
|
SDL_Window* Window::GetWindow() const
|
||||||
{
|
{
|
||||||
return m_window;
|
return m_window;
|
||||||
}
|
}
|
||||||
|
|
||||||
const VulkanContext * Window::GetVulkanContext() const
|
|
||||||
{
|
|
||||||
return m_vulkanContext;
|
|
||||||
}
|
|
||||||
} // ConjureEngine
|
} // ConjureEngine
|
||||||
@ -5,12 +5,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "PCH.h"
|
#include "PCH.h"
|
||||||
#include "VulkanContext.h"
|
|
||||||
|
|
||||||
namespace ConjureEngine
|
namespace ConjureEngine
|
||||||
{
|
{
|
||||||
struct WindowInfo {
|
struct WindowInfo {
|
||||||
std::string title;
|
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
int width;
|
int width;
|
||||||
@ -19,18 +17,14 @@ namespace ConjureEngine
|
|||||||
|
|
||||||
class Window {
|
class Window {
|
||||||
public:
|
public:
|
||||||
explicit Window(const WindowInfo &windowInfo);
|
explicit Window(const char* title, const WindowInfo &windowInfo);
|
||||||
|
|
||||||
~Window();
|
~Window();
|
||||||
|
|
||||||
const SDL_Window *GetWindow() const;
|
SDL_Window* GetWindow() const;
|
||||||
|
|
||||||
const VulkanContext *GetVulkanContext() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
public:
|
public:
|
||||||
private:
|
private:
|
||||||
SDL_Window *m_window;
|
SDL_Window* m_window;
|
||||||
VulkanContext *m_vulkanContext;
|
|
||||||
};
|
};
|
||||||
} // ConjureEngine
|
} // ConjureEngine
|
||||||
|
|||||||
@ -5,16 +5,15 @@
|
|||||||
#include "Demo1.h"
|
#include "Demo1.h"
|
||||||
#include "ConjureEngine/ConjureEngine.h"
|
#include "ConjureEngine/ConjureEngine.h"
|
||||||
|
|
||||||
static ConjureEngine::ApplicationInfo appInfo = ConjureEngine::ApplicationInfo{
|
static ConjureEngine::ApplicationInfo appInfo = ConjureEngine::ApplicationInfo
|
||||||
{
|
{
|
||||||
ConjureEngine::WindowInfo{
|
"Demo1",
|
||||||
"Demo1",
|
ConjureEngine::WindowInfo {
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1920,
|
1920,
|
||||||
1080
|
1080
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace Demo1 {
|
namespace Demo1 {
|
||||||
@ -22,7 +21,10 @@ namespace Demo1 {
|
|||||||
|
|
||||||
|
|
||||||
int Demo1::Run() const {
|
int Demo1::Run() const {
|
||||||
ConjureEngine::Window window(m_applicationInfo.window);
|
ConjureEngine::Window window(appInfo.title.c_str(), m_applicationInfo.window);
|
||||||
|
|
||||||
|
// INIT VULKAN
|
||||||
|
ConjureEngine::VulkanContext vulkanContext(window.GetWindow(), this->m_vkAppInfo);
|
||||||
|
|
||||||
bool running = true;
|
bool running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
|
#define SDL_MAIN_HANDLED
|
||||||
|
|
||||||
#include "Demo1.h"
|
#include "Demo1.h"
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main ( int argc, char* argv[] )
|
||||||
{
|
{
|
||||||
|
SDL_SetMainReady();
|
||||||
|
|
||||||
const Demo1::Demo1 app;
|
const Demo1::Demo1 app;
|
||||||
|
|
||||||
return app.Run();
|
return app.Run();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user