Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 9950 was 9869, checked in by bensch, 18 years ago

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

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