Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

OpenGLDeviceC.h

00001 #ifndef __OPENGLDEVICEC_H__
00002 #define __OPENGLDEVICEC_H__
00003 
00004 #define WIN32_LEAN_AND_MEAN
00005 #include <windows.h>
00006 #include <gl\gl.h>
00007 
00008 // forward declaration
00009 
00010 namespace PajaSystem {
00011     class OpenGLDeviceC;
00012 };
00013 
00014 #include "PajaTypes.h"
00015 #include "BBox2C.h"
00016 #include "ColorC.h"
00017 #include "Vector2C.h"
00018 #include "DeviceInterfaceI.h"
00019 #include "GraphicsDeviceI.h"
00020 #include "OpenGLViewportC.h"
00021 #include "OpenGLGUIDrawInterfaceC.h"
00022 #include "DeviceFeedbackC.h"
00023 #include "OpenGLBufferC.h"
00024 
00025 
00026 namespace PajaSystem {
00027 
00029 //
00030 //  OpenGL Device Driver Class ID
00031 //
00032 
00033     const PluginClass::ClassIdC CLASS_OPENGL_DEVICEDRIVER = PluginClass::ClassIdC( 0, 10000 );
00034 
00035 
00036     class OpenGLDeviceC : public GraphicsDeviceI
00037     {
00038     public:
00039         static OpenGLDeviceC*           create_new();
00040         virtual Edit::DataBlockI*       create();
00041         virtual PluginClass::ClassIdC   get_class_id() const;
00042         virtual const char*             get_class_name();
00043         virtual DeviceInterfaceI*       query_interface( const PluginClass::SuperClassIdC& rSuperClassId );
00044         virtual PajaTypes::uint32       save( FileIO::SaveC* pSave );
00045         virtual PajaTypes::uint32       load( FileIO::LoadC* pLoad );
00046 
00047         virtual bool                    init( HINSTANCE hInstance, HWND hParent, PajaTypes::int32 i32ID, PajaTypes::uint32 ui32Flags,
00048                                             PajaTypes::uint32 ui32Width = 0, PajaTypes::uint32 ui32Height = 0, PajaTypes::uint32 ui32BPP = 0,
00049                                             PajaSystem::DeviceFeedbackC* pFeedback = 0 );
00050         virtual void                    destroy();
00051         virtual void                    flush();
00052         virtual void                    activate();
00053         virtual HWND                    get_hwnd();
00054         virtual bool                    configure();
00055 
00056         virtual bool                    set_fullscreen( PajaTypes::uint32 ui32Width, PajaTypes::uint32 ui32Height,
00057                                                         PajaTypes::uint32 ui32BPP = 0 );
00058         virtual bool                    set_windowed();
00059 
00060         virtual void                    set_size( PajaTypes::int32 int32X, PajaTypes::int32 int32Y,
00061                                                         PajaTypes::int32 i32Width, PajaTypes::int32 i32Height );
00062 
00063         // clear device
00064         virtual void                    clear_device( PajaTypes::uint32 ui32Flags, const PajaTypes::ColorC& rColor = PajaTypes::ColorC(),
00065                                                         PajaTypes::float32 f32Depth = 1.0f, PajaTypes::int32 i32Stencil = 0 );
00066 
00067         virtual void                    begin_draw();
00068         virtual void                    end_draw();
00069 
00070         // Pushes current state and prepares to draw effects
00071         virtual void                    begin_effects();
00072         virtual void                    end_effects();
00073 
00075         virtual GraphicsBufferI*                create_graphicsbuffer();
00077         virtual GraphicsBufferI*                set_render_target( GraphicsBufferI* pBuffer );
00078 
00079         virtual HDC                     get_hdc();
00080         virtual HGLRC                   get_glrc();
00081 
00082     private:
00083 
00084         OpenGLDeviceC();
00085         virtual ~OpenGLDeviceC();
00086 
00087 
00088         void                    choose_resolution( PajaTypes::uint32& ui32Width, PajaTypes::uint32& ui32Height );
00089 
00090         static bool             set_pixelformat( HDC hDC );
00091 
00092         static LRESULT CALLBACK stub_window_proc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
00093 
00094         HWND                    m_hWnd;
00095         HDC                     m_hDC;
00096         HGLRC                   m_hGLRC;
00097 
00098         LONG                    m_lSavedWindowStyle;
00099         LONG                    m_lSavedExWindowStyle;
00100         PajaTypes::uint32       m_ui32SavedCreateFlags;
00101         HWND                    m_hSavedParent;
00102         RECT                    m_rSavedWindowRect;
00103         PajaTypes::BBox2C       m_rSavedViewport;
00104 
00105         PajaTypes::uint32       m_ui32CreateFlags;
00106 
00107         bool                    m_bResolutionChanged;
00108 
00109         OpenGLViewportC*            m_pInterface;
00110         OpenGLGUIDrawInterfaceC*    m_pGUIDrawInterface;
00111         DeviceFeedbackC*            m_pFeedback;
00112         OpenGLBufferC*              m_pCurrentBuffer;
00113 
00114         static HGLRC            m_hMainGLRC;
00115         static PajaTypes::int32 m_i32RefCount;
00116         static bool             m_bClassCreated;
00117         static PajaTypes::int32 m_i32InstCount;
00118     };
00119 
00120 };
00121 
00122 #endif // __OPENGLDEVICEC_H__

Moppi Demopaja SDK Documentation -- Copyright © 2000-2002 Moppi Productions