#include "wx/glcanvas.h"
+// the rendering context used by all GL canvases
+class TestGLContext : public wxGLContext
+{
+public:
+ TestGLContext(wxGLCanvas *canvas);
+
+ // render the cube showing it at given angles
+ void DrawRotatedCube(float xangle, float yangle);
+
+private:
+ // textures for the cube faces
+ GLuint m_textures[6];
+};
+
// Define a new application type
-class MyApp: public wxApp
+class MyApp : public wxApp
{
public:
MyApp() { m_glContext = NULL; }
- // set the specified canvas for current output
- void SetCurrent(wxGLCanvas *canvas);
+ // Returns the shared context used by all frames and sets it as current for
+ // the given canvas.
+ TestGLContext& GetContext(wxGLCanvas *canvas);
// virtual wxApp methods
virtual bool OnInit();
private:
// the GL context we use for all our windows
- wxGLContext *m_glContext;
+ TestGLContext *m_glContext;
};
// Define a new frame type
-class TestGLCanvas;
-
-class MyFrame: public wxFrame
+class MyFrame : public wxFrame
{
public:
MyFrame();
- void OnExit(wxCommandEvent& event);
- void OnNewWindow(wxCommandEvent& event);
- void OnDefRotateLeftKey(wxCommandEvent& event);
- void OnDefRotateRightKey(wxCommandEvent& event);
-
private:
- TestGLCanvas *m_canvas;
+ void OnClose(wxCommandEvent& event);
+ void OnNewWindow(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
};
public:
TestGLCanvas(wxWindow *parent);
+private:
void OnPaint(wxPaintEvent& event);
- void OnSize(wxSizeEvent& event);
void OnKeyDown(wxKeyEvent& event);
-private:
- // OpenGL calls can't be done until we're initialized
- bool IsInitialized() const { return m_gllist != 0; }
-
- // one-time OpenGL initialization, only does something if !IsInitialized()
- void InitGL();
-
- // render to window
- void Render();
-
-
- // the list of commands to draw the cube
- GLuint m_gllist;
+ // angles of rotation around x- and y- axis
+ float m_xangle,
+ m_yangle;
DECLARE_EVENT_TABLE()
};
#endif // _WX_CUBE_H_
-