Sprite accepts alpha mod parameter; duplicate texture method

This commit is contained in:
Frank DeMarco 2020-07-11 02:06:58 -04:00
parent 74ca4da69a
commit 605360bae5
4 changed files with 13 additions and 0 deletions

View File

@ -194,6 +194,7 @@ void Sprite::update()
{
SDL_Texture* texture = frames[frame_ii];
SDL_Renderer* renderer = get_root()->renderer;
SDL_SetTextureAlphaMod(texture, alpha_mod);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderCopyF(renderer, texture, NULL, box.get_rect());
}

View File

@ -25,6 +25,7 @@ struct Sprite : Node
Animation blink_animation = Animation(&Sprite::toggle_hidden, this, 500);
bool is_hidden = false;
glm::vec2 step = {0, 0};
Uint8 alpha_mod = 255;
Sprite(Node*);
Sprite(Node*, std::string);

View File

@ -35,6 +35,16 @@ void sfw::fill_texture(SDL_Renderer* renderer, SDL_Texture* texture, SDL_Texture
}
}
SDL_Texture* sfw::duplicate_texture(SDL_Renderer* renderer, SDL_Texture* texture)
{
Box box = get_texture_box(texture);
SDL_Texture* duplicate = SDL_CreateTexture(
renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, box.get_w(), box.get_h());
SDL_SetRenderTarget(renderer, duplicate);
SDL_RenderCopyF(renderer, texture, NULL, NULL);
return duplicate;
}
std::vector<fs::path> sfw::glob(fs::path query)
{
fs::path basename = query.parent_path();

View File

@ -23,6 +23,7 @@ namespace sfw
Box get_texture_box(SDL_Texture*);
void fill_texture(SDL_Renderer*, SDL_Texture*, int, int, int, int = 0xff);
void fill_texture(SDL_Renderer*, SDL_Texture*, SDL_Texture*);
SDL_Texture* duplicate_texture(SDL_Renderer*, SDL_Texture*);
std::vector<fs::path> glob(fs::path);
fs::path get_next_file_name(
fs::path, int = 0, std::string = "", std::string = "");