diff --git a/CMakeLists.txt b/CMakeLists.txt index b21a875..08b4bf1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,13 @@ project(HansTheGatherer) # Option to switch real platform vs. SDL implementation... -find_package(SDL3 REQUIRED) -find_package(flecs REQUIRED) -find_package(spdlog REQUIRED) +find_package(SDL3 CONFIG REQUIRED) +find_package(SDL3_image CONFIG REQUIRED) +find_package(flecs CONFIG REQUIRED) +find_package(spdlog CONFIG REQUIRED) add_executable(HansTheGatherer main.cpp) -target_link_libraries(HansTheGatherer SDL3::SDL3 flecs::flecs spdlog::spdlog) +target_link_libraries(HansTheGatherer SDL3::SDL3 SDL3_image::SDL3_image flecs::flecs spdlog::spdlog) set_property(TARGET HansTheGatherer PROPERTY CXX_STANDARD 20) diff --git a/jungle.jpg b/jungle.jpg new file mode 100644 index 0000000..558eb0d Binary files /dev/null and b/jungle.jpg differ diff --git a/main.cpp b/main.cpp index 72deb3b..1377829 100644 --- a/main.cpp +++ b/main.cpp @@ -1,13 +1,19 @@ #include #include +#include #include +#include +#include #include #include const uint8_t image_data[] = { -#embed "main.cpp" +#embed "jungle.jpg" }; +static constexpr int WINDOW_WIDTH = 400; +static constexpr int WINDOW_HEIGHT = 280; + auto main() -> int { spdlog::info("Initialize SDL..."); bool sdl_success = SDL_Init(SDL_INIT_VIDEO); @@ -16,7 +22,8 @@ auto main() -> int { std::terminate(); } - auto *sdl_window = SDL_CreateWindow("HansTheGatherer", 400, 280, 0); + auto *sdl_window = + SDL_CreateWindow("HansTheGatherer", WINDOW_WIDTH, WINDOW_HEIGHT, 0); if (sdl_window == nullptr) { spdlog::critical("Failed to create SDL window!\nCause: {}", SDL_GetError()); } @@ -29,6 +36,12 @@ auto main() -> int { flecs::world world; + auto *image_iostream = SDL_IOFromConstMem(image_data, sizeof(image_data)); + SDL_Texture *img = IMG_LoadTexture_IO(sdl_renderer, image_iostream, false); + if (img == nullptr) { + spdlog::error("Failed to load SDL texture!\nCause: {}", SDL_GetError()); + } + bool exit_gameloop = false; while (!exit_gameloop) { SDL_Event event; @@ -44,6 +57,10 @@ auto main() -> int { break; } } + + SDL_RenderClear(sdl_renderer); + SDL_RenderTexture(sdl_renderer, img, nullptr, nullptr); + SDL_RenderPresent(sdl_renderer); } SDL_DestroyRenderer(sdl_renderer); diff --git a/vcpkg.json b/vcpkg.json index 2bfa665..e124372 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -2,6 +2,10 @@ "dependencies": [ "spdlog", "sdl3", + { + "name": "sdl3-image", + "features": ["jpeg"] + }, "spdlog", "flecs" ]