Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/graphics_engine.h @ 6981

Last change on this file since 6981 was 6979, checked in by bensch, 20 years ago

orxonox/trunk: GraphicsEffects are BaseObject Lists now

File size: 5.1 KB
Line 
1/*!
2 * @file graphics_engine.h
3
4  *  defines a Interface between orxonox and graphical input
5
6    handles graphical SDL-initialisation, textures, resolutions, and so on
7 */
8
9#ifndef _GRAPHICS_ENGINE_H
10#define _GRAPHICS_ENGINE_H
11
12#include "event_listener.h"
13
14#include "sdlincl.h"
15#include "glincl.h"
16
17#include <list>
18
19// Forward Declaration
20class Text;
21class IniParser;
22class SubString;
23class WorldEntity;
24class GraphicsEffect;
25class TiXmlElement;
26
27//! class to handle graphics
28/**
29   handles graphical SDL-initialisation, textures, resolutions, and so on
30 */
31class GraphicsEngine : public EventListener
32{
33  public:
34    virtual ~GraphicsEngine();
35    /** @returns a Pointer to the only object of this Class */
36    inline static GraphicsEngine* getInstance() { if (!GraphicsEngine::singletonRef) GraphicsEngine::singletonRef = new GraphicsEngine();  return GraphicsEngine::singletonRef; };
37
38    virtual void loadParams(const TiXmlElement* root);
39
40    int init();
41    int initFromIniFile(IniParser* iniParser);
42
43    void setWindowName(const char* windowName, const char* icon);
44
45    int setResolution(int width, int height, int bpp);
46    void setFullscreen(bool fullscreen = false);
47    static void setBackgroundColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha = 1.0);
48
49
50    /** @returns the x resolution */
51    inline int getResolutionX() const { return this->resolutionX; };
52    /** @returns the y resolution */
53    inline int getResolutionY() const { return this->resolutionY; };
54    /** @returns the Bits Per Pixel */
55    inline int getbbp() const { return this->bitsPerPixel; };
56
57    int resolutionChanged(const SDL_ResizeEvent& resizeInfo);
58
59    static void showMouse(bool show);
60    static bool isMouseVisible();
61    static void stealWMEvents(bool steal);
62    static bool isStealingEvents();
63
64    static void enter2DMode();
65    static void leave2DMode();
66
67    void wireframe();
68
69    static void storeMatrices();
70    static GLdouble modMat[16];
71    static GLdouble projMat[16];
72    static GLint viewPort[4];
73
74    void update(float dt);
75    void tick(float dt);
76    void draw() const;
77    void draw(const std::list<WorldEntity*>& drawList) const;
78    void displayFPS(bool display);
79
80    void listModes();
81    bool hwSupportsEXT(const char* extension);
82
83    /** @brief swaps the GL_BUFFERS */
84    inline static void swapBuffers() { SDL_GL_SwapBuffers(); };
85
86    void process(const Event  &event);
87
88    void loadGraphicsEffects(const TiXmlElement* root);
89
90
91
92  private:
93    GraphicsEngine();
94    int initVideo(unsigned int resX, unsigned int resY, unsigned int bbp);
95    int setGLattribs();
96    void grabHardwareSettings();
97
98  public:
99
100  private:
101    static GraphicsEngine*     singletonRef;       //!< Pointer to the only instance of this Class
102    bool                       isInit;             //!< if the GraphicsEngine is initialized.
103
104    // state.
105    SDL_Surface*               screen;             //!< the screen we draw to
106    int                        resolutionX;        //!< the X-resoultion of the screen
107    int                        resolutionY;        //!< the Y-resolution of the screen
108    int                        bitsPerPixel;       //!< the bits per pixels of the screen
109    Uint32                     fullscreenFlag;     //!< if we are in fullscreen mode
110    Uint32                     videoFlags;         //!< flags for video
111    SDL_Rect**                 videoModes;         //!< list of resolutions
112
113    bool                       fogEnabled;         //!< If Fog should be enabled.
114    bool                       shadowsEnabled;     //!< If Shadows should be enabled.
115    bool                       particlesEnabled;   //!< If particles should be enabled.
116    int                        particlesValue;     //!< How many particles
117    int                        textureQuality;     //!< the quality of Textures
118    int                        filteringMethod;    //!< The filtering Method of textures.
119    int                        modelQuality;       //!< The quality of the Models loaded.
120    int                        antialiasingDepth;  //!< the Depth of the AntiAlias-Filter.
121
122    // HARDWARE-Settings:
123    char*                      hwRenderer;         //!< HW-renderer-string
124    char*                      hwVendor;           //!< HW-vendor-string
125    char*                      hwVersion;          //!< HW-version-string
126    SubString*                 hwExtensions;       //!< All suported Extensions.
127
128    // FPS-related
129    bool                       bDisplayFPS;        //!< is true if the fps should be displayed
130    float                      currentFPS;         //!< the current frame rate: frames per seconds
131    float                      maxFPS;             //!< maximal frame rate we ever got since start of the game
132    float                      minFPS;             //!< minimal frame rate we ever got since start.
133
134    const std::list<BaseObject*>* graphicsEffects; //!< list of graphics effects
135
136
137#ifndef NO_TEXT
138  Text*          geTextCFPS;                    //!< Text for the current FPS
139  Text*          geTextMaxFPS;                  //!< Text for the max FPS
140  Text*          geTextMinFPS;                  //!< Text for the min FPS
141#endif /* NO_TEXT */
142};
143
144#endif /* _GRAPHICS_ENGINE_H */
Note: See TracBrowser for help on using the repository browser.