#include "level.h" texture_ptr Level::render(SDL_Renderer* ren, Layer layer) const { texture_ptr canvas( SDL_CreateTexture( ren, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, LEVEL_SIZE.w(), LEVEL_SIZE.h())); SDL_SetRenderTarget(ren, canvas.get()); SDL_SetTextureBlendMode(canvas.get(), SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(ren, 0, 0, 0, 0); SDL_RenderFillRect(ren, nullptr); for (size_t y = 0; y < size_.h(); y++) { for (size_t x = 0; x < size_.w(); x++) { SDL_Rect src { 0, static_cast(at(x, y, layer) * TILE_SIZE.h()), TILE_SIZE.w(), TILE_SIZE.h() }; SDL_Rect dest { static_cast(x * TILE_SIZE.w()), static_cast(y * TILE_SIZE.h()), TILE_SIZE.w(), TILE_SIZE.h() }; SDL_RenderCopy( ren, getTileset(layer).getImage().get(), &src, &dest); } } SDL_SetRenderTarget(ren, nullptr); return canvas; }