Refactor Renderer class to remove inheritance from ExperimentFlags; streamline bitmap rendering and updating methods
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
#include <memory>
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/utils/sdl_deleter.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
|
||||
@@ -21,11 +20,8 @@ namespace core {
|
||||
* This class is a singleton that provides functionality for creating and
|
||||
* rendering bitmaps to the screen. It also includes methods for updating
|
||||
* bitmaps on the screen.
|
||||
*
|
||||
* The Renderer class uses the ExperimentFlags class to access the application's
|
||||
* flags.
|
||||
*/
|
||||
class Renderer : public ExperimentFlags {
|
||||
class Renderer {
|
||||
public:
|
||||
static Renderer &GetInstance() {
|
||||
static Renderer instance;
|
||||
@@ -33,8 +29,8 @@ class Renderer : public ExperimentFlags {
|
||||
}
|
||||
|
||||
absl::Status CreateRenderer(SDL_Window *window) {
|
||||
renderer_ = std::unique_ptr<SDL_Renderer, SDL_Deleter>(
|
||||
SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED));
|
||||
renderer_ = std::unique_ptr<SDL_Renderer, SDL_Deleter>(SDL_CreateRenderer(
|
||||
window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED));
|
||||
if (renderer_ == nullptr) {
|
||||
return absl::InternalError(
|
||||
absl::StrFormat("SDL_CreateRenderer: %s\n", SDL_GetError()));
|
||||
@@ -50,22 +46,14 @@ class Renderer : public ExperimentFlags {
|
||||
* @brief Used to render a bitmap to the screen.
|
||||
*/
|
||||
void RenderBitmap(gfx::Bitmap *bitmap) {
|
||||
if (flags()->kLoadTexturesAsStreaming) {
|
||||
bitmap->CreateTexture(renderer_.get());
|
||||
} else {
|
||||
// bitmap->CreateTexture(renderer_);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Used to update a bitmap on the screen.
|
||||
*/
|
||||
void UpdateBitmap(gfx::Bitmap *bitmap, bool use_sdl_update = false) {
|
||||
if (flags()->kLoadTexturesAsStreaming) {
|
||||
bitmap->UpdateTexture(renderer_.get(), use_sdl_update);
|
||||
} else {
|
||||
// bitmap->UpdateTexture(renderer_);
|
||||
}
|
||||
}
|
||||
|
||||
absl::Status CreateAndRenderBitmap(int width, int height, int depth,
|
||||
|
||||
Reference in New Issue
Block a user