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(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})
|
||||
|
||||
# Specify include directories
|
||||
|
||||
@ -6,6 +6,13 @@
|
||||
|
||||
namespace ConjureEngine {
|
||||
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; }
|
||||
|
||||
@ -9,7 +9,13 @@
|
||||
|
||||
namespace ConjureEngine {
|
||||
struct ApplicationInfo {
|
||||
WindowInfo window{"", 0, 0, 0, 0};
|
||||
std::string title;
|
||||
WindowInfo window{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
};
|
||||
|
||||
class Application {
|
||||
@ -25,5 +31,6 @@ namespace ConjureEngine {
|
||||
public:
|
||||
protected:
|
||||
ApplicationInfo m_applicationInfo;
|
||||
VkApplicationInfo m_vkAppInfo{};
|
||||
};
|
||||
} // ConjureEngine
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "Application.h"
|
||||
#include "VulkanContext.h"
|
||||
#include "Window.h"
|
||||
|
||||
@ -19,10 +19,4 @@
|
||||
|
||||
// VULKAN
|
||||
#include "vulkan/vulkan.h"
|
||||
#include "vulkan/vulkan_core.h"
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include "vulkan/vulkan_metal.h"
|
||||
#elifdef __WINDOWS__
|
||||
#include "vulkan/vulkan_win32.h"
|
||||
#endif
|
||||
#include "vulkan/vulkan_core.h"
|
||||
@ -4,6 +4,13 @@
|
||||
|
||||
#include "VulkanContext.h"
|
||||
|
||||
#ifdef __WIN32__
|
||||
// #include <vulkan/vulkan_win32.h>
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
#include "vulkan/vulkan_metal.h"
|
||||
#endif
|
||||
|
||||
namespace ConjureEngine {
|
||||
VulkanContext::VulkanContext(SDL_Window* window, const VkApplicationInfo& appInfo) {
|
||||
// LOAD THE EXTENSIONS
|
||||
@ -110,6 +117,10 @@ namespace ConjureEngine {
|
||||
vulkanInfos.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
||||
#endif
|
||||
|
||||
#ifdef __WIN32__
|
||||
this->m_extensionNames.push_back("VK_KHR_win32_surface");
|
||||
#endif
|
||||
|
||||
vulkanInfos.enabledExtensionCount = static_cast<uint32_t>(this->m_extensionNames.size());
|
||||
vulkanInfos.ppEnabledExtensionNames = this->m_extensionNames.data();
|
||||
}
|
||||
|
||||
@ -5,29 +5,16 @@
|
||||
|
||||
namespace ConjureEngine {
|
||||
|
||||
Window::Window(const WindowInfo& windowInfo)
|
||||
Window::Window(const char* title, const WindowInfo& windowInfo)
|
||||
{
|
||||
// INIT WINDOW
|
||||
SDL_Init(SDL_INIT_VIDEO);
|
||||
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
|
||||
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);
|
||||
m_window = SDL_CreateWindow(title, 0, 32, windowInfo.width, windowInfo.height, SDL_WINDOW_SHOWN | SDL_WINDOW_VULKAN);
|
||||
}
|
||||
|
||||
Window::~Window() {
|
||||
delete m_vulkanContext;
|
||||
|
||||
SDL_DestroyWindow(m_window);
|
||||
SDL_Vulkan_UnloadLibrary();
|
||||
SDL_Quit();
|
||||
@ -35,13 +22,8 @@ namespace ConjureEngine {
|
||||
SDL_Log("Cleaned up with errors: %s", SDL_GetError());
|
||||
}
|
||||
|
||||
const SDL_Window* Window::GetWindow() const
|
||||
SDL_Window* Window::GetWindow() const
|
||||
{
|
||||
return m_window;
|
||||
}
|
||||
|
||||
const VulkanContext * Window::GetVulkanContext() const
|
||||
{
|
||||
return m_vulkanContext;
|
||||
}
|
||||
} // ConjureEngine
|
||||
@ -5,12 +5,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "PCH.h"
|
||||
#include "VulkanContext.h"
|
||||
|
||||
namespace ConjureEngine
|
||||
{
|
||||
struct WindowInfo {
|
||||
std::string title;
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
@ -19,18 +17,14 @@ namespace ConjureEngine
|
||||
|
||||
class Window {
|
||||
public:
|
||||
explicit Window(const WindowInfo &windowInfo);
|
||||
explicit Window(const char* title, const WindowInfo &windowInfo);
|
||||
|
||||
~Window();
|
||||
|
||||
const SDL_Window *GetWindow() const;
|
||||
|
||||
const VulkanContext *GetVulkanContext() const;
|
||||
|
||||
SDL_Window* GetWindow() const;
|
||||
private:
|
||||
public:
|
||||
private:
|
||||
SDL_Window *m_window;
|
||||
VulkanContext *m_vulkanContext;
|
||||
SDL_Window* m_window;
|
||||
};
|
||||
} // ConjureEngine
|
||||
|
||||
@ -5,16 +5,15 @@
|
||||
#include "Demo1.h"
|
||||
#include "ConjureEngine/ConjureEngine.h"
|
||||
|
||||
static ConjureEngine::ApplicationInfo appInfo = ConjureEngine::ApplicationInfo{
|
||||
{
|
||||
ConjureEngine::WindowInfo{
|
||||
"Demo1",
|
||||
0,
|
||||
0,
|
||||
1920,
|
||||
1080
|
||||
}
|
||||
}
|
||||
static ConjureEngine::ApplicationInfo appInfo = ConjureEngine::ApplicationInfo
|
||||
{
|
||||
"Demo1",
|
||||
ConjureEngine::WindowInfo {
|
||||
0,
|
||||
0,
|
||||
1920,
|
||||
1080
|
||||
}
|
||||
};
|
||||
|
||||
namespace Demo1 {
|
||||
@ -22,7 +21,10 @@ namespace Demo1 {
|
||||
|
||||
|
||||
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;
|
||||
while (running) {
|
||||
|
||||
@ -1,7 +1,11 @@
|
||||
#define SDL_MAIN_HANDLED
|
||||
|
||||
#include "Demo1.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
int main ( int argc, char* argv[] )
|
||||
{
|
||||
SDL_SetMainReady();
|
||||
|
||||
const Demo1::Demo1 app;
|
||||
|
||||
return app.Run();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user