Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 4836 was 4836, checked in by bensch, 19 years ago

orxonox/trunk: renamed all the \param → @param and so on in Doxygen tags.
Thanks a lot to the kDevelop team. this took since the last commit :)

File size: 3.6 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// Forward Declaration
18class Text;
19class IniParser;
20
21//! class to handle graphics
22/**
23   handles graphical SDL-initialisation, textures, resolutions, and so on
24 */
25class GraphicsEngine : public EventListener
26{
27  public:
28    virtual ~GraphicsEngine();
29    /** @returns a Pointer to the only object of this Class */
30    inline static GraphicsEngine* getInstance() { if (!singletonRef) singletonRef = new GraphicsEngine();  return singletonRef; };
31
32    int init();
33    int initFromIniFile(IniParser* iniParser);
34
35    void setWindowName(const char* windowName, const char* icon);
36
37    int setResolution(int width, int height, int bpp);
38    void setFullscreen(bool fullscreen = false);
39    static void setBackgroundColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha = 1.0);
40
41
42    /** @returns the x resolution */
43    inline int getResolutionX() const { return this->resolutionX; };
44    /** @returns the y resolution */
45    inline int getResolutionY() const { return this->resolutionY; };
46    /** @returns the Bits Per Pixel */
47    inline int getbbp() const { return this->bitsPerPixel; };
48
49    int resolutionChanged(const SDL_ResizeEvent& resizeInfo);
50
51    static void showMouse(bool show);
52    static bool isMouseVisible();
53    static void stealWMEvents(bool steal);
54    static bool isStealingEvents();
55
56    static void enter2DMode();
57    static void leave2DMode();
58
59    static void storeMatrices();
60    static GLdouble modMat[16];
61    static GLdouble projMat[16];
62    static GLint viewPort[4];
63
64    void tick(float dt);
65    void displayFPS(bool display);
66
67    void listModes();
68
69    /** \brief swaps the GL_BUFFERS */
70    inline static void swapBuffers() { SDL_GL_SwapBuffers(); };
71
72    void process(const Event  &event);
73
74  private:
75    GraphicsEngine();
76    int initVideo(unsigned int resX, unsigned int resY, unsigned int bbp);
77    int setGLattribs();
78
79  public:
80    static bool             texturesEnabled; //!< if textures should be enabled (globally)
81
82
83  private:
84    static GraphicsEngine*  singletonRef;    //!< Pointer to the only instance of this Class
85    bool                    isInit;          //!< if the GraphicsEngine is initialized.
86
87    SDL_Surface*            screen;          //!< the screen we draw to
88    int                     resolutionX;     //!< the X-resoultion of the screen
89    int                     resolutionY;     //!< the Y-resolution of the screen
90    int                     bitsPerPixel;    //!< the bits per pixels of the screen
91    Uint32                  fullscreenFlag;  //!< if we are in fullscreen mode
92    Uint32                  videoFlags;      //!< flags for video
93    SDL_Rect**              videoModes;      //!< list of resolutions
94
95    bool                    bDisplayFPS;     //!< is true if the fps should be displayed
96    float                   currentFPS;      //!< the current frame rate: frames per seconds
97    float                   maxFPS;          //!< maximal frame rate we ever got since start of the game
98    float                   minFPS;          //!< minimal frame rate we ever got since start
99
100
101#ifndef NO_TEXT
102  Text*          geTextCFPS;      //!< Text for the current FPS
103  Text*          geTextMaxFPS;    //!< Text for the max FPS
104  Text*          geTextMinFPS;    //!< Text for the min FPS
105#endif /* NO_TEXT */
106};
107
108#endif /* _GRAPHICS_ENGINE_H */
Note: See TracBrowser for help on using the repository browser.