diff --git a/main.cpp b/main.cpp index 51370ed..29dcc17 100644 --- a/main.cpp +++ b/main.cpp @@ -103,23 +103,23 @@ int main() try { // no clue who owns this auto* texture = SDL_CreateTexture( - renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, width, + renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, width, height ); sdl_check(SDL_SetRenderTarget(renderer, texture)); - sdl_check(SDL_SetRenderDrawColor(renderer, 0xdb, 0xd7, 0xc0, SDL_ALPHA_OPAQUE)); + sdl_check( + SDL_SetRenderDrawColor(renderer, 0xff, 0xff, 0xff, SDL_ALPHA_OPAQUE) + ); sdl_check(SDL_RenderClear(renderer)); - sdl_check(SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND)); - sdl_check(SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 2)); - SDL_Point pos{.x = width / 2, .y = height / 2}; + SDL_Point pos{.x = width / 2, .y = height / 2}; constexpr SDL_Point directions[] = { {.x = -1, .y = 0}, {.x = 1, .y = 0}, {.x = 0, .y = -1}, {.x = 0, .y = 1} }; std::mt19937_64 rne(std::random_device{}()); std::uniform_int_distribution dist(0, 3); - constexpr auto batchsize = 1000; + constexpr auto batchsize = 10000; const auto start_time = clock::now(); auto next_poll_events_time = start_time; @@ -149,13 +149,35 @@ int main() try { pos = newpoint; point_batch[step] = newpoint; } - sdl_check(SDL_SetRenderTarget(renderer, texture)); - sdl_check(SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND)); - sdl_check(SDL_RenderDrawPoints(renderer, point_batch.data(), point_batch.size())); + ///// Render image + sdl_check(SDL_SetRenderTarget(renderer, texture)); + sdl_check(SDL_SetRenderDrawBlendMode( + renderer, + SDL_ComposeCustomBlendMode( + SDL_BLENDFACTOR_SRC_ALPHA, SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA, + SDL_BLENDOPERATION_ADD, SDL_BLENDFACTOR_ZERO, + SDL_BLENDFACTOR_ONE, SDL_BLENDOPERATION_ADD + ) + )); + sdl_check( + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE) + ); + sdl_check(SDL_RenderDrawPoints( + renderer, point_batch.data(), point_batch.size() + )); + sdl_check(SDL_SetRenderDrawColor(renderer, 0xff, 0xff, 0xff, 32)); + sdl_check(SDL_RenderFillRect(renderer, nullptr)); + // SDL_RenderCopy(renderer, fade_texture, nullptr, nullptr); + + ///// Render screen sdl_check(SDL_SetRenderTarget(renderer, nullptr)); + sdl_check( + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE) + ); + SDL_RenderClear(renderer); sdl_check(SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE)); - sdl_check(SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_NONE)); + // sdl_check(SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_NONE)); sdl_check(SDL_RenderCopy(renderer, texture, nullptr, nullptr)); SDL_RenderPresent(renderer); } diff --git a/screenshot.png b/screenshot.png index 35287ab..2e752d2 100644 Binary files a/screenshot.png and b/screenshot.png differ