Advertisement
Guest User

openglcanvas

a guest
Feb 27th, 2015
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.76 KB | None | 0 0
  1. #include "wx/wx.h"
  2. #include <wx/glcanvas.h>
  3. #include "openglcanvas.h"
  4. #include "GL/gl.h"
  5. //#include <GL/glut.h>
  6. #include "GL/freeglut.h"
  7. #include <wx/accel.h>
  8. #include "mainframe.h"
  9.  
  10. BEGIN_EVENT_TABLE(OpenGLCanvas, wxGLCanvas)
  11.  
  12. EVT_PAINT(OpenGLCanvas::OnPaint)
  13. EVT_SIZE(OpenGLCanvas::OnSize)
  14. EVT_ERASE_BACKGROUND(OpenGLCanvas::OnEraseBackground)
  15. EVT_MOTION(OpenGLCanvas::OnMouseMove)
  16. EVT_LEFT_DOWN(OpenGLCanvas::OnLeftDown)
  17. EVT_LEFT_UP(OpenGLCanvas::OnLeftUp)
  18.  
  19. END_EVENT_TABLE ()
  20.  
  21. using namespace std;
  22.  
  23. OpenGLCanvas::OpenGLCanvas(wxWindow *parent, wxWindowID id,const wxPoint& pos, const wxSize& size,long style, const wxString& name): wxGLCanvas(parent, id, pos, size, style, name)
  24. {
  25.     m_parent=(CMainFrame*)parent;
  26. }
  27.  
  28. OpenGLCanvas::~OpenGLCanvas(void)
  29. {
  30.  
  31. }
  32.  
  33. void OpenGLCanvas::OnPaint(wxPaintEvent& event)
  34. {
  35.     wxPaintDC dc(this);
  36.     SetCurrent();
  37.  
  38.     //instructions dans Draw()
  39.     Draw();
  40.     SwapBuffers();
  41. }
  42.  
  43. void OpenGLCanvas::OnSize(wxSizeEvent& event)
  44. {
  45.     wxGLCanvas::OnSize(event);
  46.     int w, h;
  47.  
  48.     GetClientSize(&w, &h);
  49.  
  50.     glViewport(0, 0, (GLint) w, (GLint) h);
  51. }
  52.  
  53. void OpenGLCanvas::OnEraseBackground(wxEraseEvent& event)
  54. {
  55.  
  56. }
  57.  
  58. void OpenGLCanvas::Draw()
  59. {
  60.     glMatrixMode( GL_PROJECTION );
  61.     glLoadIdentity();
  62.     int w, h;
  63.     GetClientSize(&w, &h);
  64.     cout <<w<<" "<<h<<endl;
  65.     glOrtho(-w/2., w/2., -h/2., h/2., -1., 3.);
  66.  
  67.     glMatrixMode( GL_MODELVIEW );
  68.     glLoadIdentity();
  69.  
  70.     glClearColor( .3f, .4f, .6f, 1 );
  71.     glClear( GL_COLOR_BUFFER_BIT);
  72.  
  73.     cout<<"drawing triangles"<<endl;
  74.  
  75.     /*glBegin(GL_TRIANGLES);
  76.     glVertex2f(0.4f,0.4f);
  77.     glVertex2f(0.2f,0.2f);
  78.     glVertex2f(0.3f,0.3f);*/
  79.  
  80.     for(int i=0;i<m_parent->num_tri;i++)
  81.     {
  82.         glBegin(GL_TRIANGLES);
  83.         cout<<"triangle "<<i<<endl;
  84.         // triangle plein
  85.         glColor3d(m_parent->tab_tri[i].colour->Red(),m_parent->tab_tri[i].colour->Green(),m_parent->tab_tri[i].colour->Blue()); // the color
  86.         glVertex2i(m_parent->tab_tri[i].p1.x,m_parent->tab_tri[i].p1.y);
  87.         glVertex2i(m_parent->tab_tri[i].p2.x,m_parent->tab_tri[i].p2.y);
  88.         glVertex2i(m_parent->tab_tri[i].p3.x,m_parent->tab_tri[i].p3.y);
  89.         glEnd();
  90.  
  91.         glBegin(GL_LINE_STRIP);
  92.         // triangle vide
  93.         glColor3d(0,0,0); // black
  94.         glLineWidth(m_parent->tab_tri[i].thickness);
  95.         glVertex2i(m_parent->tab_tri[i].p1.x,m_parent->tab_tri[i].p1.y);
  96.         glVertex2i(m_parent->tab_tri[i].p2.x,m_parent->tab_tri[i].p2.y);
  97.         glVertex2i(m_parent->tab_tri[i].p3.x,m_parent->tab_tri[i].p3.y);
  98.         glEnd();
  99.     }
  100. }
  101.  
  102. void OpenGLCanvas::OnMouseMove(wxMouseEvent& event)
  103. {
  104.  
  105. }
  106.  
  107. void OpenGLCanvas::OnLeftUp(wxMouseEvent& event)
  108. {
  109.  
  110. }
  111.  
  112. void OpenGLCanvas::OnLeftDown(wxMouseEvent& event)
  113. {
  114.  
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement