Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
NoneWrapper.cpp
Go to the documentation of this file.
1
2
4
10
11namespace Divide
12{
13 NONE_API::NONE_API( GFXDevice& context ) noexcept
14 : _context( context )
15 {
16 }
17
18 void NONE_API::idle( [[maybe_unused]] const bool fast ) noexcept
19 {
20 }
21
22 bool NONE_API::drawToWindow( [[maybe_unused]] DisplayWindow& window )
23 {
24 return true;
25 }
26
28 {
29 }
30
32 {
33 }
34
35 void NONE_API::prepareFlushWindow( [[maybe_unused]] DisplayWindow& window )
36 {
37 SDL_RenderClear( _renderer );
38 }
39
41 {
42 constexpr U32 ChangeTimerInSeconds = 3;
43
44 thread_local auto beginTimer = std::chrono::high_resolution_clock::now();
45
46 static I32 w = -1, offsetX = 5;
47 static I32 h = -1, offsetY = 5;
48
49 if ( w == -1 )
50 {
51 SDL_QueryTexture( _texture, NULL, NULL, &w, &h );
52 }
53
54 const I32 windowW = to_I32( window.getDimensions().width ), windowH = window.getDimensions().height;
55 if ( windowW < w || windowH < h )
56 {
57 SDL_RenderCopy( _renderer, _texture, NULL, NULL );
58 }
59 else
60 {
61 const auto currentTimer = std::chrono::high_resolution_clock::now();
62
63 if ( std::chrono::duration_cast<std::chrono::seconds>(currentTimer - beginTimer).count() >= ChangeTimerInSeconds )
64 {
65 beginTimer = currentTimer;
66
67 offsetX = Random( 5, windowW - w );
68 offsetY = Random( 5, windowH - h );
69 }
70
71 SDL_Rect dstrect = { offsetX, offsetY, w, h };
72 SDL_RenderCopy( _renderer, _texture, NULL, &dstrect );
73 }
74 SDL_RenderPresent( _renderer );
75 }
76
78 {
79 return true;
80 }
81
83 {
84 return true;
85 }
86
87 ErrorCode NONE_API::initRenderingAPI( [[maybe_unused]] I32 argc, [[maybe_unused]] char** argv, [[maybe_unused]] Configuration& config ) noexcept
88 {
89 DIVIDE_ASSERT( _renderer == nullptr );
90
91 const DisplayWindow& window = *_context.context().app().windowManager().mainWindow();
92 _renderer = SDL_CreateRenderer( window.getRawWindow(), -1, 0u );
93 if ( _renderer == nullptr )
94 {
96 }
97
98 const string logoPath = (Paths::g_imagesLocation / "divideLogo.bmp").string();
99 _background = SDL_LoadBMP( logoPath.c_str() );
100 if ( _background == nullptr )
101 {
103 }
104
105 _texture = SDL_CreateTextureFromSurface( _renderer, _background );
106 if ( _texture == nullptr )
107 {
109 }
110
111 SDL_SetRenderDrawColor( _renderer,
116
117 SDL_RenderCopy( _renderer, _texture, NULL, NULL );
118
119 return ErrorCode::NO_ERR;
120 }
121
123 {
124 DIVIDE_ASSERT( _renderer != nullptr );
125
126 SDL_DestroyTexture( _texture );
127 SDL_FreeSurface( _background );
128 SDL_DestroyRenderer( _renderer );
129 _texture = nullptr;
130 _background = nullptr;
131 _renderer = nullptr;
132 }
133
134 void NONE_API::flushCommand( [[maybe_unused]] GFX::CommandBase* cmd ) noexcept
135 {
136 }
137
138 void NONE_API::preFlushCommandBuffer( [[maybe_unused]] const Handle<GFX::CommandBuffer> commandBuffer )
139 {
140 }
141
142 void NONE_API::postFlushCommandBuffer( [[maybe_unused]] const Handle<GFX::CommandBuffer> commandBuffer ) noexcept
143 {
144 }
145
146 bool NONE_API::setViewportInternal( [[maybe_unused]] const Rect<I32>& newViewport ) noexcept
147 {
148 return true;
149 }
150
151 bool NONE_API::setScissorInternal( [[maybe_unused]] const Rect<I32>& newScissor ) noexcept
152 {
153 return true;
154 }
155
156 void NONE_API::onThreadCreated( [[maybe_unused]] const std::thread::id& threadID, [[maybe_unused]] const bool isMainRenderThread ) noexcept
157 {
158 }
159
160 bool NONE_API::bindShaderResources( [[maybe_unused]] const DescriptorSetEntries& descriptorSetEntries )
161 {
162 return true;
163 }
164
166 {
167
168 }
169
170 RenderTarget_uptr NONE_API::newRT( const RenderTargetDescriptor& descriptor ) const
171 {
172 return std::make_unique<noRenderTarget>( _context, descriptor );
173 }
174
175 GenericVertexData_ptr NONE_API::newGVD( U32 ringBufferLength, const std::string_view name ) const
176 {
177 return std::make_shared<noGenericVertexData>( _context, ringBufferLength, name );
178 }
179
180 ShaderBuffer_uptr NONE_API::newSB( const ShaderBufferDescriptor& descriptor ) const
181 {
182 return std::make_unique<noUniformBuffer>( _context, descriptor );
183 }
184
185} //namespace Divide
#define DIVIDE_ASSERT(...)
char * argv[]
Definition: main.cpp:8
WindowManager & windowManager() noexcept
Definition: Application.inl:77
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.
Definition: GFXDevice.h:215
SDL_Texture * _texture
Definition: NoneWrapper.h:77
SDL_Surface * _background
Definition: NoneWrapper.h:76
ShaderBuffer_uptr newSB(const ShaderBufferDescriptor &descriptor) const override
void closeRenderingAPI() noexcept override
GFXDevice & _context
Definition: NoneWrapper.h:74
void postFlushCommandBuffer(Handle< GFX::CommandBuffer > commandBuffer) noexcept override
void flushWindow(DisplayWindow &window) override
Definition: NoneWrapper.cpp:40
void onRenderThreadLoopEnd() override
Definition: NoneWrapper.cpp:31
RenderTarget_uptr newRT(const RenderTargetDescriptor &descriptor) const override
NONE_API(GFXDevice &context) noexcept
Definition: NoneWrapper.cpp:13
void initDescriptorSets() override
SDL_Renderer * _renderer
Definition: NoneWrapper.h:75
bool frameStarted() override
Definition: NoneWrapper.cpp:77
void prepareFlushWindow(DisplayWindow &window) override
Definition: NoneWrapper.cpp:35
GenericVertexData_ptr newGVD(U32 ringBufferLength, std::string_view name) const override
bool bindShaderResources(const DescriptorSetEntries &descriptorSetEntries) override
bool drawToWindow(DisplayWindow &window) override
Definition: NoneWrapper.cpp:22
void idle(bool fast) noexcept override
Definition: NoneWrapper.cpp:18
ErrorCode initRenderingAPI(I32 argc, char **argv, Configuration &config) noexcept override
Definition: NoneWrapper.cpp:87
bool setViewportInternal(const Rect< I32 > &newViewport) noexcept override
bool frameEnded() override
Definition: NoneWrapper.cpp:82
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
Definition: NoneWrapper.cpp:27
PlatformContext & context() noexcept
Application & app() noexcept
UColour4 DIVIDE_BLUE_U8
Definition: Colours.cpp:21
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
std::array< DescriptorSetEntry, to_base(DescriptorSetUsage::COUNT)> DescriptorSetEntries
int32_t I32
T Random()
Definition: MathHelper.inl:95
constexpr I32 to_I32(const T value)
uint32_t U32