X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3dec57adfdb2469b7679930092f0bd9c8569d62c..4b912ef220f5509b4d6a09a38c9e7839b5f11a6b:/samples/opengl/penguin/penguin.cpp diff --git a/samples/opengl/penguin/penguin.cpp b/samples/opengl/penguin/penguin.cpp index b3b59e7313..12a70d4de1 100644 --- a/samples/opengl/penguin/penguin.cpp +++ b/samples/opengl/penguin/penguin.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -31,9 +31,13 @@ #include "penguin.h" #ifdef __WXMAC__ -#include +# ifdef __DARWIN__ +# include +# else +# include +# endif #else -#include +# include #endif #define VIEW_ASPECT 1.3 @@ -53,7 +57,7 @@ bool MyApp::OnInit(void) menuBar->Append(fileMenu, "&File"); frame->SetMenuBar(menuBar); - frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200)); + frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200), wxSUNKEN_BORDER); /* Load file wiht mesh data */ frame->m_canvas->LoadLWO( "penguin.lwo" ); @@ -151,9 +155,19 @@ void TestGLCanvas::OnPaint( wxPaintEvent& event ) void TestGLCanvas::OnSize(wxSizeEvent& event) { - // the viewport must be initialized this way, not glViewport // this is also necessary to update the context on some platforms wxGLCanvas::OnSize(event); + + // set GL viewport (not called by wxGLCanvas::OnSize on all platforms...) + int w, h; + GetClientSize(&w, &h); +#ifndef __WXMOTIF__ + if (GetContext()) +#endif + { + SetCurrent(); + glViewport(0, 0, (GLint) w, (GLint) h); + } } void TestGLCanvas::OnEraseBackground(wxEraseEvent& event) @@ -189,17 +203,17 @@ void TestGLCanvas::OnMouse( wxMouseEvent& event ) /* drag in progress, simulate trackball */ float spin_quat[4]; trackball(spin_quat, - (2.0*info.beginx - sz.x) / sz.x, - ( sz.y - 2.0*info.beginy) / sz.y, - ( 2.0*event.GetX() - sz.x) / sz.x, - ( sz.y - 2.0*event.GetY()) / sz.y); - + (2.0*info.beginx - sz.x) / sz.x, + ( sz.y - 2.0*info.beginy) / sz.y, + ( 2.0*event.GetX() - sz.x) / sz.x, + ( sz.y - 2.0*event.GetY()) / sz.y); + add_quats( spin_quat, info.quat, info.quat ); - + /* orientation has changed, redraw mesh */ - Refresh(FALSE); + Refresh(FALSE); } - + info.beginx = event.GetX(); info.beginy = event.GetY(); }