12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #ifndef RenderThread_H
- #define RenderThread_H
- #include "Thread.h"
- #include "Critical.h"
- namespace Framework
- {
- class Bildschirm; // Bildschirm.h
- class ZeitMesser; // ZeitMesser.h
- class Bild; // Bild.h
- // Ein Thread, der ein Bildschirm verwaltet. Er ruft die render() und tick() funktionen automatisch auf
- class RenderTh : private Thread
- {
- private:
- bool stoppen;
- Bildschirm *bildschirm;
- ZeitMesser *zeit;
- double renderTickZeit;
- void *renderParameter;
- void *tickParameter;
- void( *renderFunktion )( void *, void *, Bild * );
- void( *tickFunktion )( void *, void *, double );
- bool pause;
- Critical cs;
- int maxFps;
- int ref;
- public:
- // Konstruktor
- __declspec( dllexport ) RenderTh();
- // Destruktor
- __declspec( dllexport ) ~RenderTh();
- // Dies ist notwendig, falls mehrere Threads gleichzeitig das Objekt benutzen.
- // Wenn lock() von zwei threads aufgerufen wird, wartet der letzte so lange, bis der erste unlock() aufgerufen hat.
- __declspec( dllexport ) void lock();
- // Dies ist notwendig, falls mehrere Threads gleichzeitig das Objekt benutzen.
- // Wenn lock() von zwei threads aufgerufen wird, wartet der letzte so lange, bis der erste unlock() aufgerufen hat.
- __declspec( dllexport ) void unlock();
- // Setzt das Bildschirm Objekt, das verwaltet werden soll
- // bildschirm: Der Bildschirm
- __declspec( dllexport ) void setBildschirm( Bildschirm *bildschirm );
- // Die Funktion, die automatisch in einem neuen Thread ausgeführt wird
- __declspec( dllexport ) void thread() override;
- // Beginnt den Render Thread
- __declspec( dllexport ) void beginn();
- // Beendet den Render Thread
- __declspec( dllexport ) void beenden();
- // Setzt die maximalen Bilder pro Sekunde
- // fps: maximale Bilder pro Sekunde
- __declspec( dllexport ) void setMaxFps( int fps );
- // Pausiert den Render Thread
- // p: 1, wenn der Thread pausiert werden soll
- __declspec( dllexport ) void setPause( bool p );
- // Setzt die Rückruffunktion, die immer vor dem Zeichnen aufgerufen wird
- // rF: Die Rückruffunktion
- __declspec( dllexport ) void setRenderFunktion( void( *rF )( void *, void *, Bild * ) );
- // Setzt die Rückruffunktion, die immer vor dem Aktualisieren aller Objekte aufgerufen wird
- // rF: Die Rückruffunktion
- __declspec( dllexport ) void setTickFunktion( void( *tF )( void *, void *, double ) );
- // Setzt den Parameter der Rückruffunktion, die immer vor dem Zeichnen aufgerufen wird
- // p: Der Parameter
- __declspec( dllexport ) void setRenderFunktionParameter( void *p );
- // Setzt den Parameter der Rückruffunktion, die immer vor dem Aktualisieren aller Objekte aufgerufen wird
- __declspec( dllexport ) void setTickFunktionParameter( void *p );
- // Gibt den Bildschirm zurück, der von dem Thread verwaltet wird
- __declspec( dllexport ) Bildschirm *getBildschirm() const;
- // Gibt den Bildschirm ohne erhöhten Reference Counter zurück, der von dem Thread verwaltet wird
- __declspec( dllexport ) Bildschirm *zBildschirm() const;
- // Gibt die Zeit zurück, mit der die tick() Funktion des Bildschirms als letztes aufgerufen wurde
- __declspec( dllexport ) double getRenderTickZeit() const;
- // Erhöht den Reference Counter um 1
- // Return: Ein zeiger auf diesen Shader
- __declspec( dllexport ) RenderTh *getThis();
- // Verringert den Reference Counter und löscht den Shader, falls der Refeence Counter auf 0 ist
- // Return: 0
- __declspec( dllexport ) RenderTh *release();
- };
- }
- #endif
|