X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cb71207424c20cc8aa39280e108a9bb12cb379e1..daa66792aa4a108887d2b4e8078df6067b6a762f:/samples/opengl/isosurf/isosurf.cpp?ds=sidebyside diff --git a/samples/opengl/isosurf/isosurf.cpp b/samples/opengl/isosurf/isosurf.cpp index 3d3bda3dc9..9e474230f1 100644 --- a/samples/opengl/isosurf/isosurf.cpp +++ b/samples/opengl/isosurf/isosurf.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -45,6 +45,12 @@ # include #endif +// disabled because this has apparently changed in OpenGL 1.2, so doesn't link +// correctly if this is on... +#ifdef GL_EXT_vertex_array +#undef GL_EXT_vertex_array +#endif + #include "isosurf.h" // The following part is taken largely unchanged from the original C Version @@ -85,8 +91,8 @@ static void read_surface( char *filename ) numverts = 0; while (!feof(f) && numvertsm_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200), + frame->m_canvas = new TestGLCanvas(frame, -1, wxDefaultPosition, wxDefaultSize, 0, "TestGLCanvas", gl_attrib ); // Show the frame @@ -363,53 +362,58 @@ void TestGLCanvas::OnPaint( wxPaintEvent& event ) void TestGLCanvas::OnSize(wxSizeEvent& event) { + // 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()) return; + if (GetContext()) #endif - - SetCurrent(); - int width, height; - GetClientSize(& width, & height); - Reshape(width, height); + { + SetCurrent(); + glViewport(0, 0, (GLint) w, (GLint) h); + } } void TestGLCanvas::OnChar(wxKeyEvent& event) { - switch(event.KeyCode()) { + switch(event.GetKeyCode()) { case WXK_ESCAPE: - exit(0); + exit(0); case WXK_LEFT: - yrot -= 15.0; - break; + yrot -= 15.0; + break; case WXK_RIGHT: - yrot += 15.0; - break; + yrot += 15.0; + break; case WXK_UP: - xrot += 15.0; - break; + xrot += 15.0; + break; case WXK_DOWN: - xrot -= 15.0; - break; + xrot -= 15.0; + break; case 's': case 'S': - smooth = !smooth; - if (smooth) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - break; + smooth = !smooth; + if (smooth) { + glShadeModel(GL_SMOOTH); + } else { + glShadeModel(GL_FLAT); + } + break; case 'l': case 'L': - lighting = !lighting; - if (lighting) { - glEnable(GL_LIGHTING); - } else { - glDisable(GL_LIGHTING); - } - break; + lighting = !lighting; + if (lighting) { + glEnable(GL_LIGHTING); + } else { + glDisable(GL_LIGHTING); + } + break; default: { event.Skip(); - return; + return; } } @@ -423,17 +427,17 @@ void TestGLCanvas::OnMouseEvent(wxMouseEvent& event) //printf("%f %f %d\n", event.GetX(), event.GetY(), (int)event.LeftIsDown()); if(event.LeftIsDown()) { - if(!dragging) { - dragging = 1; - } else { - yrot += (event.GetX() - last_x)*1.0; - xrot += (event.GetY() - last_y)*1.0; - Refresh(FALSE); - } - last_x = event.GetX(); - last_y = event.GetY(); + if(!dragging) { + dragging = 1; + } else { + yrot += (event.GetX() - last_x)*1.0; + xrot += (event.GetY() - last_y)*1.0; + Refresh(FALSE); + } + last_x = event.GetX(); + last_y = event.GetY(); } else - dragging = 0; + dragging = 0; } void TestGLCanvas::OnEraseBackground(wxEraseEvent& event)