Initial setup with SDL window
This commit is contained in:
commit
baad5b4555
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.cache/
|
||||
build/
|
||||
|
||||
14
CMakeLists.txt
Normal file
14
CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(vksdlproj VERSION 0.1.0 LANGUAGES C CXX)
|
||||
|
||||
SET(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
|
||||
set(EXE_NAME project)
|
||||
|
||||
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
|
||||
|
||||
set(PROGRAM_SOURCES ${CMAKE_SOURCE_DIR}/src/vulkanapp.cc)
|
||||
|
||||
add_executable(${EXE_NAME} ${CMAKE_SOURCE_DIR}/src/main.cc ${PROGRAM_SOURCES})
|
||||
target_include_directories(${EXE_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
target_link_libraries(${EXE_NAME} PRIVATE SDL2::SDL2)
|
||||
30
include/vulkanapp.hh
Normal file
30
include/vulkanapp.hh
Normal file
@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include "SDL_video.h"
|
||||
#include "SDL_events.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
class VulkanApp {
|
||||
public:
|
||||
VulkanApp(const uint32_t& _w, const uint32_t& _h) :
|
||||
mWidth(_w), mHeight(_h), mWin(nullptr), mActive(false) {}
|
||||
|
||||
void run() {
|
||||
init();
|
||||
loop();
|
||||
cleanup();
|
||||
}
|
||||
|
||||
SDL_Window *mWin;
|
||||
SDL_Event mEvent;
|
||||
const uint32_t mWidth;
|
||||
const uint32_t mHeight;
|
||||
bool mActive;
|
||||
|
||||
void init();
|
||||
void loop();
|
||||
void cleanup();
|
||||
};
|
||||
17
src/main.cc
Normal file
17
src/main.cc
Normal file
@ -0,0 +1,17 @@
|
||||
#include "vulkanapp.hh"
|
||||
|
||||
#include <exception>
|
||||
|
||||
int main() {
|
||||
VulkanApp app(640, 480);
|
||||
|
||||
try {
|
||||
app.run();
|
||||
} catch(const std::exception& except) {
|
||||
fprintf(stderr, "Error! %s\n", except.what());
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
69
src/vulkanapp.cc
Normal file
69
src/vulkanapp.cc
Normal file
@ -0,0 +1,69 @@
|
||||
#include "vulkanapp.hh"
|
||||
|
||||
#include "SDL.h"
|
||||
#include "SDL_vulkan.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <stdexcept>
|
||||
|
||||
void VulkanApp::init() {
|
||||
SDL_Init(SDL_INIT_EVERYTHING);
|
||||
SDL_Vulkan_LoadLibrary(nullptr);
|
||||
|
||||
// Create the window
|
||||
mWin = SDL_CreateWindow("Vulkan+SDL2 Application",
|
||||
SDL_WINDOWPOS_CENTERED,
|
||||
SDL_WINDOWPOS_CENTERED,
|
||||
mWidth,
|
||||
mHeight,
|
||||
SDL_WINDOW_SHOWN | SDL_WINDOW_VULKAN
|
||||
);
|
||||
|
||||
if(mWin == nullptr) {
|
||||
std::string err = "Could not create window ";
|
||||
err += SDL_GetError();
|
||||
err += "\n";
|
||||
throw std::runtime_error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanApp::loop() {
|
||||
if(mWin == nullptr) {
|
||||
std::string err = "Could not find window ";
|
||||
err += SDL_GetError();
|
||||
err += "\n";
|
||||
throw std::runtime_error(err);
|
||||
}
|
||||
|
||||
mActive = true;
|
||||
|
||||
//SDL_Renderer *rend = SDL_CreateRenderer(mWin, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
|
||||
// Main loop
|
||||
while(mActive) {
|
||||
while(SDL_PollEvent(&mEvent))
|
||||
if(mEvent.type == SDL_QUIT) {
|
||||
mActive = false;
|
||||
break;
|
||||
}
|
||||
|
||||
//SDL_SetRenderDrawColor(rend, 255, 0, 0, 255);
|
||||
//SDL_RenderClear(rend);
|
||||
|
||||
//SDL_RenderPresent(rend);
|
||||
|
||||
SDL_ShowWindow(mWin);
|
||||
}
|
||||
|
||||
//SDL_DestroyRenderer(rend);
|
||||
}
|
||||
|
||||
void VulkanApp::cleanup() {
|
||||
if(mWin != nullptr) {
|
||||
SDL_DestroyWindow(mWin);
|
||||
mWin = nullptr;
|
||||
}
|
||||
|
||||
SDL_Vulkan_UnloadLibrary();
|
||||
SDL_Quit();
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user