Bring in a simple SDL2 demo for completeness. It's running in a main.cpp to test SDL2 in C++.

This commit is contained in:
Zed A. Shaw 2024-04-24 06:51:37 -04:00
parent dfbae6043b
commit b4ff44788a
6 changed files with 57 additions and 3 deletions

View file

@ -18,7 +18,7 @@ To get this working the rough (ROUGH) steps are:
2. Run setup.ps1 2. Run setup.ps1
3. `meson compile -C builddir` 3. `meson compile -C builddir`
4. `meson install -C builddir` -- Careful with this, it might install stuff in unwanted areas. On my computer it put them in `C:\` but I have to read the instructions on how to set the install location. 4. `meson install -C builddir` -- Careful with this, it might install stuff in unwanted areas. On my computer it put them in `C:\` but I have to read the instructions on how to set the install location.
5. `./builddir/sfmlprog` -- That should run it and you see a window with ImGUI's demo panel. 5. `./builddir/sfmldemo` -- That should run it and you see a window with ImGUI's demo panel.
I'll have more extensive instructions in a later blog post, but if you have time try this out and let me know how it went at help@learncodethehardway.com. Please let me know if you tried a different compiler, Windows version, etc. If you're on OSX or Linux it should work the same but Linux people might want to use their package manager instead. I'll have more extensive instructions in a later blog post, but if you have time try this out and let me know how it went at help@learncodethehardway.com. Please let me know if you tried a different compiler, Windows version, etc. If you're on OSX or Linux it should work the same but Linux people might want to use their package manager instead.

36
sdl2demo/main.cpp Normal file
View file

@ -0,0 +1,36 @@
#include "SDL.h"
int main(int argc, char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Surface *surface;
SDL_Event event;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s", SDL_GetError());
return 3;
}
if (SDL_CreateWindowAndRenderer(1920, 1080, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create window and renderer: %s", SDL_GetError());
return 3;
}
while (1) {
SDL_PollEvent(&event);
if (event.type == SDL_QUIT) {
break;
}
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

11
sdl2demo/meson.build Normal file
View file

@ -0,0 +1,11 @@
project('sdl2demo', 'cpp',
default_options: [
'cpp_std=c++17',
])
sdl2_dep = dependency('sdl2')
imgui_dep = dependency('imgui')
executable('sdl2demo', 'main.cpp',
win_subsystem: 'windows',
dependencies: [sdl2_dep, imgui_dep])

5
sdl2demo/setup.ps1 Normal file
View file

@ -0,0 +1,5 @@
mkdir builddir
mkdir subprojects
meson wrap install imgui
meson wrap install sdl2
meson setup builddir

View file

@ -1,9 +1,11 @@
project('sfmldemo', 'cpp', project('sfmldemo', 'cpp',
default_options: ['cpp_std=c++17']) default_options: [
'cpp_std=c++17',
])
sfml_dep = dependency('sfml') sfml_dep = dependency('sfml')
imgui_dep = dependency('imgui-sfml') imgui_dep = dependency('imgui-sfml')
executable('sfmlprog', 'sfmlprog.cpp', executable('sfmldemo', 'main.cpp',
win_subsystem: 'windows', win_subsystem: 'windows',
dependencies: [sfml_dep, imgui_dep]) dependencies: [sfml_dep, imgui_dep])