C:\uir\pr\cb\test6\test6Main.cpp||In constructor 'TestGLCanvas::TestGLCanvas(wxWindow*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&)':|
C:\uir\pr\cb\test6\test6Main.cpp|79|warning: 'wxGLCanvas::wxGLCanvas(wxWindow*, const wxGLCanvas*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&, const int*, const wxPalette&)' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/msw/glcanvas.h:119) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In constructor 'TestGLCanvas::TestGLCanvas(wxWindow*, const TestGLCanvas*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&)':|
C:\uir\pr\cb\test6\test6Main.cpp|86|warning: 'wxGLContext* wxGLCanvasBase::GetContext() const' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:136) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp|86|warning: 'wxGLCanvas::wxGLCanvas(wxWindow*, const wxGLContext*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&, const int*, const wxPalette&)' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/msw/glcanvas.h:107) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In member function 'void TestGLCanvas::Render()':|
C:\uir\pr\cb\test6\test6Main.cpp|101|warning: 'wxGLContext* wxGLCanvasBase::GetContext() const' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:136) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp|104|warning: 'void wxGLCanvasBase::SetCurrent()' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:138) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In member function 'void TestGLCanvas::InitGL()':|
C:\uir\pr\cb\test6\test6Main.cpp|179|warning: 'void wxGLCanvasBase::SetCurrent()' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:138) [-Wdeprecated-declarations]|
||=== Build finished: 0 error(s), 6 warning(s) (0 minute(s), 49 second(s)) ===|
test6Main.cpp
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#if !wxUSE_GLCANVAS
#error "OpenGL required: set wxUSE_GLCANVAS to 1 and rebuild the library"
#endif
#include "test6Main.h"
//#include "sample.xpm"
#ifndef __WXMSW__ // for StopWatch, see remark below
#if defined(__WXMAC__) && !defined(__DARWIN__)
#include <utime.h>
#include <unistd.h>
#else
#include <sys/time.h>
#include <sys/unistd.h>
#endif
#else
#include <sys/timeb.h>
#endif
/*----------------------------------------------------------------------
Utility function to get the elapsed time (in msec) since a given point
in time (in sec) (because current version of wxGetElapsedTime doesnґt
works right with glibc-2.1 and linux, at least for me)
-----------------------------------------------------------------------*/
unsigned long StopWatch( unsigned long *sec_base )
{
unsigned long secs,msec;
#if defined(__WXMSW__)
struct timeb tb;
ftime( &tb );
secs = tb.time;
msec = tb.millitm;
#elif defined(__WXMAC__) && !defined(__DARWIN__)
wxLongLong tl = wxGetLocalTimeMillis();
secs = (unsigned long) (tl.GetValue() / 1000);
msec = (unsigned long) (tl.GetValue() - secs*1000);
#else
// think every unice has gettimeofday
struct timeval tv;
gettimeofday( &tv, (struct timezone *)NULL );
secs = tv.tv_sec;
msec = tv.tv_usec/1000;
#endif
if( *sec_base == 0 )
*sec_base = secs;
return( (secs-*sec_base)*1000 + msec );
}
/*----------------------------------------------------------------
Implementation of Test-GLCanvas
-----------------------------------------------------------------*/
BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas)
EVT_SIZE(TestGLCanvas::OnSize)
EVT_PAINT(TestGLCanvas::OnPaint)
EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground)
EVT_ENTER_WINDOW( TestGLCanvas::OnEnterWindow )
END_EVENT_TABLE()
unsigned long TestGLCanvas::m_secbase = 0;
int TestGLCanvas::m_TimeInitialized = 0;
unsigned long TestGLCanvas::m_xsynct;
unsigned long TestGLCanvas::m_gsynct;
TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name)
: wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name )
{
m_init = false;
m_gllist = 0;
}
TestGLCanvas::TestGLCanvas(wxWindow *parent, const TestGLCanvas *other, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name)
: wxGLCanvas(parent, other->GetContext(), id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name)
{
m_init = false;
m_gllist = other->m_gllist; // share display list
}
TestGLCanvas::~TestGLCanvas()
{
}
void TestGLCanvas::Render()
{
wxPaintDC dc(this);
#ifndef __WXMOTIF__
if (!GetContext()) return;
#endif
SetCurrent();
// Init OpenGL once, but after SetCurrent
if (!m_init)
{
InitGL();
m_init = true;
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);
glMatrixMode(GL_MODELVIEW);
/* clear color and depth buffers */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if( m_gllist == 0 )
{
m_gllist = glGenLists( 1 );
glNewList( m_gllist, GL_COMPILE_AND_EXECUTE );
/* draw six faces of a cube */
glBegin(GL_QUADS);
glNormal3f( 0.0f, 0.0f, 1.0f);
glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f,-0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);
glNormal3f( 0.0f, 0.0f,-1.0f);
glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);
glVertex3f( 0.5f, 0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);
glNormal3f( 0.0f, 1.0f, 0.0f);
glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);
glVertex3f(-0.5f, 0.5f,-0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);
glNormal3f( 0.0f,-1.0f, 0.0f);
glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);
glVertex3f( 0.5f,-0.5f, 0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);
glNormal3f( 1.0f, 0.0f, 0.0f);
glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);
glVertex3f( 0.5f,-0.5f,-0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);
glNormal3f(-1.0f, 0.0f, 0.0f);
glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);
glEnd();
glEndList();
}
else
{
glCallList(m_gllist);
}
glFlush();
SwapBuffers();
}
void TestGLCanvas::OnEnterWindow( wxMouseEvent& WXUNUSED(event) )
{
SetFocus();
}
void TestGLCanvas::OnPaint( wxPaintEvent& WXUNUSED(event) )
{
Render();
}
void TestGLCanvas::OnEraseBackground(wxEraseEvent& WXUNUSED(event))
{
// Do nothing, to avoid flashing.
}
void TestGLCanvas::InitGL()
{
SetCurrent();
/* set viewing projection */
glMatrixMode(GL_PROJECTION);
glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);
/* position viewer */
glMatrixMode(GL_MODELVIEW);
glTranslatef(0.0f, 0.0f, -2.0f);
/* position object */
glRotatef(30.0f, 1.0f, 0.0f, 0.0f);
glRotatef(30.0f, 0.0f, 1.0f, 0.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
// My frame constructor
MyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
: wxFrame(parent, wxID_ANY, title, pos, size, style)
{
m_canvas = NULL;
// SetIcon(wxIcon(sample_xpm));
}
// Intercept menu commands
void MyFrame::OnExit( wxCommandEvent& WXUNUSED(event) )
{
// true is to force the frame to close
Close(true);
}
/*static*/ MyFrame *MyFrame::Create(MyFrame *parentFrame, bool isCloneWindow)
{
wxString str = wxT("wxWidgets OpenGL Cube Sample");
if (isCloneWindow) str += wxT(" - Clone");
MyFrame *frame = new MyFrame(NULL, str, wxDefaultPosition,
wxSize(400, 300));
// Make a menubar
wxMenu *winMenu = new wxMenu;
winMenu->Append(wxID_EXIT, _T("&Close"));
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(winMenu, _T("&Window"));
frame->SetMenuBar(menuBar);
if (parentFrame)
{
frame->m_canvas = new TestGLCanvas( frame, parentFrame->m_canvas,
wxID_ANY, wxDefaultPosition, wxDefaultSize );
}
else
{
frame->m_canvas = new TestGLCanvas(frame, wxID_ANY,
wxDefaultPosition, wxDefaultSize);
}
// Show the frame
frame->Show(true);
return frame;
}
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
MyFrame::Create(NULL);
return true;
}
test6Main.h
#ifndef _WX_CUBE_H_
#define _WX_CUBE_H_
#include "wx/glcanvas.h"
// Define a new application type
class MyApp: public wxApp
{
public:
bool OnInit();
};
// Define a new frame type
class TestGLCanvas;
class MyFrame: public wxFrame
{
public:
static MyFrame *Create(MyFrame *parentFrame, bool isCloneWindow = false);
void OnExit(wxCommandEvent& event);
private:
MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,
const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
TestGLCanvas *m_canvas;
DECLARE_EVENT_TABLE()
};
#if wxUSE_GLCANVAS
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();
void OnPaint(wxPaintEvent& event);
void OnEraseBackground(wxEraseEvent& event);
void OnEnterWindow(wxMouseEvent& event);
void Render();
void InitGL();
private:
bool m_init;
GLuint m_gllist;
static unsigned long m_secbase;
static int m_TimeInitialized;
static unsigned long m_xsynct;
static unsigned long m_gsynct;
unsigned long m_StartTime;
unsigned long m_LastTime;
unsigned long m_LastRedraw;
DECLARE_EVENT_TABLE()
};
#endif // #if wxUSE_GLCANVAS
#endif // #ifndef _WX_CUBE_H_
Если я правильно понимаю, то не хватает каких-то библиотек. Если это так, то каких и как их подключать?