Browse Source

cli options

opengl-renderer-broken
Martin Dørum 4 years ago
parent
commit
32265a6091
1 changed files with 24 additions and 5 deletions
  1. 24
    5
      src/main.cc

+ 24
- 5
src/main.cc View File

@@ -7,6 +7,7 @@

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <string.h>

#include <swan/swan.h>
#include <swan/util.h>
@@ -26,7 +27,27 @@ using namespace Swan;
template<typename T>
using DeleteFunc = void (*)(T *);

int main() {
int main(int argc, char **argv) {
uint32_t winflags = SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI;
uint32_t renderflags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC;

for (int i = 1; i < argc; ++i) {
if (strcmp(argv[i], "--lodpi") == 0) {
winflags &= ~SDL_WINDOW_ALLOW_HIGHDPI;
} else if (strcmp(argv[i], "--fullscreen") == 0) {
winflags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
} else if (strcmp(argv[i], "--no-vsync") == 0) {
renderflags &= ~SDL_RENDERER_PRESENTVSYNC;
} else if (strcmp(argv[i], "--vulkan") == 0) {
winflags |= SDL_WINDOW_VULKAN;
} else if (strcmp(argv[i], "--sw-render") == 0) {
renderflags &= ~SDL_RENDERER_ACCELERATED;
renderflags |= SDL_RENDERER_SOFTWARE;
} else {
warn << "Unknown argument: " << argv[i];
}
}

sdlassert(SDL_Init(SDL_INIT_VIDEO) >= 0, "Could not initialize SDL");
auto sdl = makeDeferred([] { SDL_Quit(); });

@@ -38,8 +59,7 @@ int main() {
SDL_CreateWindow(
"Project: SWAN",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
640, 480,
SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI),
640, 480, winflags),
SDL_DestroyWindow);

// Load and display application icon
@@ -50,8 +70,7 @@ int main() {
SDL_SetWindowIcon(window.get(), icon.get());

auto renderer = makeRaiiPtr(
SDL_CreateRenderer(
window.get(), -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC),
SDL_CreateRenderer(window.get(), -1, renderflags),
SDL_DestroyRenderer);
sdlassert(renderer, "Could not create renderer");


Loading…
Cancel
Save