42 constexpr U32 ChangeTimerInSeconds = 3;
44 thread_local auto beginTimer = std::chrono::high_resolution_clock::now();
46 static I32 w = -1, offsetX = 5;
47 static I32 h = -1, offsetY = 5;
51 SDL_QueryTexture(
_texture, NULL, NULL, &w, &h );
55 if ( windowW < w || windowH < h )
61 const auto currentTimer = std::chrono::high_resolution_clock::now();
63 if ( std::chrono::duration_cast<std::chrono::seconds>(currentTimer - beginTimer).count() >= ChangeTimerInSeconds )
65 beginTimer = currentTimer;
67 offsetX =
Random( 5, windowW - w );
68 offsetY =
Random( 5, windowH - h );
71 SDL_Rect dstrect = { offsetX, offsetY, w, h };
92 _renderer = SDL_CreateRenderer( window.
getRawWindow(), -1, 0u );
93 if ( _renderer ==
nullptr )
98 const string logoPath = (Paths::g_imagesLocation /
"divideLogo.bmp").
string();
99 _background = SDL_LoadBMP( logoPath.c_str() );
100 if ( _background ==
nullptr )
105 _texture = SDL_CreateTextureFromSurface( _renderer, _background );
106 if ( _texture ==
nullptr )
111 SDL_SetRenderDrawColor( _renderer,
117 SDL_RenderCopy( _renderer, _texture, NULL, NULL );
156 void NONE_API::onThreadCreated( [[maybe_unused]]
const std::thread::id& threadID, [[maybe_unused]]
const bool isMainRenderThread )
noexcept
172 return std::make_unique<noRenderTarget>(
_context, descriptor );
177 return std::make_shared<noGenericVertexData>(
_context, ringBufferLength, name );
182 return std::make_unique<noUniformBuffer>(
_context, descriptor );
WindowManager & windowManager() noexcept
vec2< U16 > getDimensions() const noexcept
SDL_Window * getRawWindow() const noexcept
Rough around the edges Adapter pattern abstracting the actual rendering API and access to the GPU.
SDL_Surface * _background
ShaderBuffer_uptr newSB(const ShaderBufferDescriptor &descriptor) const override
void closeRenderingAPI() noexcept override
void postFlushCommandBuffer(Handle< GFX::CommandBuffer > commandBuffer) noexcept override
void flushWindow(DisplayWindow &window) override
void onRenderThreadLoopEnd() override
RenderTarget_uptr newRT(const RenderTargetDescriptor &descriptor) const override
NONE_API(GFXDevice &context) noexcept
void initDescriptorSets() override
bool frameStarted() override
void prepareFlushWindow(DisplayWindow &window) override
GenericVertexData_ptr newGVD(U32 ringBufferLength, std::string_view name) const override
bool bindShaderResources(const DescriptorSetEntries &descriptorSetEntries) override
bool drawToWindow(DisplayWindow &window) override
void idle(bool fast) noexcept override
ErrorCode initRenderingAPI(I32 argc, char **argv, Configuration &config) noexcept override
bool setViewportInternal(const Rect< I32 > &newViewport) noexcept override
bool frameEnded() override
void preFlushCommandBuffer(Handle< GFX::CommandBuffer > commandBuffer) override
void flushCommand(GFX::CommandBase *cmd) noexcept override
void onThreadCreated(const std::thread::id &threadID, bool isMainRenderThread) noexcept override
bool setScissorInternal(const Rect< I32 > &newScissor) noexcept override
void onRenderThreadLoopStart() override
PlatformContext & context() noexcept
Application & app() noexcept
Handle console commands that start with a forward slash.
std::array< DescriptorSetEntry, to_base(DescriptorSetUsage::COUNT)> DescriptorSetEntries
constexpr I32 to_I32(const T value)