TazGraph Project v0.1.0
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
AppInterface Class Referenceabstract
Inheritance diagram for AppInterface:
Inheritance graph
[legend]
Collaboration diagram for AppInterface:
Collaboration graph
[legend]

Public Member Functions

 AppInterface (int threadCount, int msaa_samples, std::string openFile, double initialTimestamp, int initialStep, bool usePython, std::array< float, 4 > bg, bool useGrid)
 
void run ()
 
void enqueueRenderCommand (std::function< void()> cmd)
 
void waitForRenderCommand ()
 
void waitForRenderThreadExit ()
 
void RenderThreadFunc ()
 
void exitSimulator ()
 
virtual void onInit ()=0
 
virtual void addScenes ()=0
 
virtual void onExit ()=0
 
void onSDLEvent (SDL_Event &evnt)
 
BaseFPSLimitergetFPSLimiter ()
 
AudioEnginegetAudioEngine ()
 
void renderBatch (const Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData, ICamera &camera)
 
void drawLineBatch (const Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData, ICamera &camera)
 
void drawPlaneColorBatch (const Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData, ICamera &camera)
 
void drawPlaneModelBatch (const Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData, ICamera &camera)
 
void drawLightBatch (const Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData, ICamera &camera)
 
void drawBatch (const std::vector< Entity * > &entities, LineRenderer &batch)
 
void drawBatch (const std::vector< Entity * > &entities, PlaneColorRenderer &batch)
 
void drawBatch (const std::vector< Entity * > &entities, PlaneModelRenderer &batch)
 
void drawBatch (const std::vector< Entity * > &entities, LightRenderer &batch)
 
void prepareBatch (Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData)
 
void prepareLineBatch (Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData)
 
void preparePlaneColorBatch (Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData)
 
void preparePlaneModelBatch (Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData)
 
void prepareLightBatch (Taz::GECSRenderBatch &batch, Taz::FrameRenderData &frameData)
 

Public Attributes

InputManager _inputManager
 
TazGraphEngine::Window _window
 
Threader threadPool
 
int MSAA_samples
 
bool useMSAA = false
 
std::string openFile
 
double initialTimestamp
 
int initialStep
 
bool usePython = false
 
std::array< float, 4 > backgroundColor
 
bool useGrid = false
 
std::condition_variable initCommandCV
 
RenderCommandQueue queues [BUFFERS_NO]
 
std::atomic< int > activeIndex = 0
 
RenderCommandQueue initQueue
 
std::mutex initMutex
 
std::condition_variable initCV
 
std::atomic< bool > initCommandReady { false }
 
std::atomic< bool > initCommandComplete { false }
 
std::vector< SDL_Event > imguiEvents
 
std::mutex imguiEventsMutex
 
ResourceManager resourceManager
 

Protected Member Functions

virtual void checkInput ()
 
virtual void update (float deltaTime)
 
virtual void prepareDraw (int index)
 
virtual void renderDraw (int index)
 
virtual void updateUI (float deltaTime)
 
virtual void drawUI ()
 
void disposeRenderers (int index)
 
virtual void swapBuffer ()
 
bool init ()
 
void initRenderers ()
 
bool initSystems ()
 

Protected Attributes

BaseFPSLimiter _limiter
 
AudioEngine _audioEngine
 
std::unique_ptr< SceneList_sceneList = nullptr
 
bool _isRunning = false
 
const float SCALE_SPEED = 0.1f
 
std::thread renderThread
 

Member Function Documentation

◆ run()

void AppInterface::run ( )

This is is necessary to avoid white flashes

It makes CPU to wait for GPU, because when entering prepare draw it may be seemingly from CPU side that swapBuffer has finished but from GPU side it has not. White flashes are caused by ultra fast prepareDraw.


The documentation for this class was generated from the following files: