X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8474a52c326082fb21a8d130ec5b6298ea1d0970..c84030e020e56735cb4b7c1534e99d21a8bb48c0:/samples/opengl/cube/cube.h diff --git a/samples/opengl/cube/cube.h b/samples/opengl/cube/cube.h index f50ea2a049..36769b884f 100644 --- a/samples/opengl/cube/cube.h +++ b/samples/opengl/cube/cube.h @@ -14,91 +14,66 @@ #include "wx/glcanvas.h" -// Define a new application type -class MyApp: public wxApp +// the rendering context used by all GL canvases +class TestGLContext : public wxGLContext { public: - bool OnInit(); -}; + TestGLContext(wxGLCanvas *canvas); -// Define a new frame type -class TestGLCanvas; + // render the cube showing it at given angles + void DrawRotatedCube(float xangle, float yangle); -class MyFrame: public wxFrame +private: + // textures for the cube faces + GLuint m_textures[6]; +}; + +// Define a new application type +class MyApp : public wxApp { public: - static MyFrame *Create(MyFrame *parentFrame, bool isCloneWindow = false); + MyApp() { m_glContext = NULL; } - void OnExit(wxCommandEvent& event); - void OnNewWindow(wxCommandEvent& event); - void OnDefRotateLeftKey(wxCommandEvent& event); - void OnDefRotateRightKey(wxCommandEvent& event); + // Returns the shared context used by all frames and sets it as current for + // the given canvas. + TestGLContext& GetContext(wxGLCanvas *canvas); -private: + // virtual wxApp methods + virtual bool OnInit(); + virtual int OnExit(); - MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, - const wxSize& size, long style = wxDEFAULT_FRAME_STYLE); +private: + // the GL context we use for all our windows + TestGLContext *m_glContext; +}; +// Define a new frame type +class MyFrame : public wxFrame +{ +public: + MyFrame(); - TestGLCanvas *m_canvas; +private: + void OnClose(wxCommandEvent& event); + void OnNewWindow(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; -#if wxUSE_GLCANVAS - -class TestGLCanvas: public wxGLCanvas +class TestGLCanvas : public wxGLCanvas { - friend class MyFrame; public: - TestGLCanvas( wxWindow *parent, wxWindowID id = wxID_ANY, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = _T("TestGLCanvas") ); - - TestGLCanvas( wxWindow *parent, const TestGLCanvas *other, - wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = _T("TestGLCanvas") ); - - ~TestGLCanvas(); + TestGLCanvas(wxWindow *parent); +private: void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnEraseBackground(wxEraseEvent& event); void OnKeyDown(wxKeyEvent& event); - void OnKeyUp(wxKeyEvent& event); - void OnEnterWindow(wxMouseEvent& event); - - void Render(); - void InitGL(); - void Rotate(GLfloat deg); - static GLfloat CalcRotateSpeed(unsigned long acceltime); - static GLfloat CalcRotateAngle( unsigned long lasttime, - unsigned long acceltime ); - void Action( long code, unsigned long lasttime, - unsigned long acceltime ); - -private: - bool m_init; - GLuint m_gllist; - long m_rleft; - long m_rright; - - static unsigned long m_secbase; - static int m_TimeInitialized; - static unsigned long m_xsynct; - static unsigned long m_gsynct; - - long m_Key; - unsigned long m_StartTime; - unsigned long m_LastTime; - unsigned long m_LastRedraw; - -DECLARE_EVENT_TABLE() -}; -#endif // #if wxUSE_GLCANVAS + // angles of rotation around x- and y- axis + float m_xangle, + m_yangle; -#endif // #ifndef _WX_CUBE_H_ + DECLARE_EVENT_TABLE() +}; +#endif // _WX_CUBE_H_