applied SourceForge patch #479670 (fixes for OpenGL samples) by Paul Thiessen
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -133,20 +133,21 @@ unsigned long wxStopWatch( unsigned long *sec_base )
|
|||||||
{
|
{
|
||||||
unsigned long secs,msec;
|
unsigned long secs,msec;
|
||||||
|
|
||||||
#ifndef __WXMSW__ // think every unice has gettimeofday
|
#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;
|
struct timeval tv;
|
||||||
gettimeofday( &tv, (struct timezone *)NULL );
|
gettimeofday( &tv, (struct timezone *)NULL );
|
||||||
secs = tv.tv_sec;
|
secs = tv.tv_sec;
|
||||||
msec = tv.tv_usec/1000;
|
msec = tv.tv_usec/1000;
|
||||||
#else
|
|
||||||
struct timeb tb;
|
|
||||||
|
|
||||||
ftime( &tb );
|
|
||||||
|
|
||||||
secs = tb.time;
|
|
||||||
|
|
||||||
msec = tb.millitm;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( *sec_base == 0 )
|
if( *sec_base == 0 )
|
||||||
@@ -214,6 +215,11 @@ void TestGLCanvas::Render()
|
|||||||
m_init = TRUE;
|
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 */
|
/* clear color and depth buffers */
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
@@ -269,15 +275,18 @@ void TestGLCanvas::OnPaint( wxPaintEvent& event )
|
|||||||
|
|
||||||
void TestGLCanvas::OnSize(wxSizeEvent& event)
|
void TestGLCanvas::OnSize(wxSizeEvent& event)
|
||||||
{
|
{
|
||||||
int width, height;
|
// this is also necessary to update the context on some platforms
|
||||||
GetClientSize(& width, & height);
|
wxGLCanvas::OnSize(event);
|
||||||
|
|
||||||
|
// set GL viewport (not called by wxGLCanvas::OnSize on all platforms...)
|
||||||
|
int w, h;
|
||||||
|
GetClientSize(&w, &h);
|
||||||
#ifndef __WXMOTIF__
|
#ifndef __WXMOTIF__
|
||||||
if (GetContext())
|
if (GetContext())
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
SetCurrent();
|
SetCurrent();
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, (GLint) w, (GLint) h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,7 +384,11 @@ void TestGLCanvas::OnKeyDown( wxKeyEvent& event )
|
|||||||
{
|
{
|
||||||
Action( m_Key, m_LastTime-m_StartTime, currTime-m_StartTime );
|
Action( m_Key, m_LastTime-m_StartTime, currTime-m_StartTime );
|
||||||
|
|
||||||
|
#if defined(__WXMAC__) && !defined(__DARWIN__)
|
||||||
|
m_LastRedraw = currTime; // wxStopWatch() doesn't work on Mac...
|
||||||
|
#else
|
||||||
m_LastRedraw = wxStopWatch(&m_secbase) - m_gsynct;
|
m_LastRedraw = wxStopWatch(&m_secbase) - m_gsynct;
|
||||||
|
#endif
|
||||||
m_LastTime = currTime;
|
m_LastTime = currTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,7 +465,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& event)
|
|||||||
frame->SetMenuBar(menuBar);
|
frame->SetMenuBar(menuBar);
|
||||||
|
|
||||||
frame->m_canvas = new TestGLCanvas( frame, *m_canvas, -1,
|
frame->m_canvas = new TestGLCanvas( frame, *m_canvas, -1,
|
||||||
wxPoint(0, 0), wxSize(200, 200) );
|
wxDefaultPosition, wxDefaultSize );
|
||||||
|
|
||||||
// Show the frame
|
// Show the frame
|
||||||
frame->Show(TRUE);
|
frame->Show(TRUE);
|
||||||
@@ -508,7 +521,7 @@ bool MyApp::OnInit(void)
|
|||||||
|
|
||||||
frame->SetMenuBar(menuBar);
|
frame->SetMenuBar(menuBar);
|
||||||
|
|
||||||
frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200));
|
frame->m_canvas = new TestGLCanvas(frame, -1, wxDefaultPosition, wxDefaultSize);
|
||||||
|
|
||||||
// Show the frame
|
// Show the frame
|
||||||
frame->Show(TRUE);
|
frame->Show(TRUE);
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
#ifndef _WX_CUBE_H_
|
#ifndef _WX_CUBE_H_
|
||||||
#define _WX_CUBE_H_
|
#define _WX_CUBE_H_
|
||||||
|
|
||||||
#include <wx/glcanvas.h>
|
#include "wx/glcanvas.h"
|
||||||
|
|
||||||
// Define a new application type
|
// Define a new application type
|
||||||
class MyApp: public wxApp
|
class MyApp: public wxApp
|
||||||
|
@@ -45,6 +45,12 @@
|
|||||||
# include <GL/glu.h>
|
# include <GL/glu.h>
|
||||||
#endif
|
#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"
|
#include "isosurf.h"
|
||||||
|
|
||||||
// The following part is taken largely unchanged from the original C Version
|
// The following part is taken largely unchanged from the original C Version
|
||||||
@@ -197,13 +203,6 @@ static void Init(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void Reshape(int width, int height)
|
|
||||||
{
|
|
||||||
glViewport(0, 0, (GLint)width, (GLint)height);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static GLenum Args(int argc, char **argv)
|
static GLenum Args(int argc, char **argv)
|
||||||
{
|
{
|
||||||
GLint i;
|
GLint i;
|
||||||
@@ -282,7 +281,7 @@ bool MyApp::OnInit(void)
|
|||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200),
|
frame->m_canvas = new TestGLCanvas(frame, -1, wxDefaultPosition, wxDefaultSize,
|
||||||
0, "TestGLCanvas", gl_attrib );
|
0, "TestGLCanvas", gl_attrib );
|
||||||
|
|
||||||
// Show the frame
|
// Show the frame
|
||||||
@@ -363,14 +362,19 @@ void TestGLCanvas::OnPaint( wxPaintEvent& event )
|
|||||||
|
|
||||||
void TestGLCanvas::OnSize(wxSizeEvent& 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__
|
#ifndef __WXMOTIF__
|
||||||
if (!GetContext()) return;
|
if (GetContext())
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
SetCurrent();
|
SetCurrent();
|
||||||
int width, height;
|
glViewport(0, 0, (GLint) w, (GLint) h);
|
||||||
GetClientSize(& width, & height);
|
}
|
||||||
Reshape(width, height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestGLCanvas::OnChar(wxKeyEvent& event)
|
void TestGLCanvas::OnChar(wxKeyEvent& event)
|
||||||
|
@@ -57,7 +57,7 @@ bool MyApp::OnInit(void)
|
|||||||
menuBar->Append(fileMenu, "&File");
|
menuBar->Append(fileMenu, "&File");
|
||||||
frame->SetMenuBar(menuBar);
|
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 */
|
/* Load file wiht mesh data */
|
||||||
frame->m_canvas->LoadLWO( "penguin.lwo" );
|
frame->m_canvas->LoadLWO( "penguin.lwo" );
|
||||||
@@ -155,9 +155,19 @@ void TestGLCanvas::OnPaint( wxPaintEvent& event )
|
|||||||
|
|
||||||
void TestGLCanvas::OnSize(wxSizeEvent& 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
|
// this is also necessary to update the context on some platforms
|
||||||
wxGLCanvas::OnSize(event);
|
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)
|
void TestGLCanvas::OnEraseBackground(wxEraseEvent& event)
|
||||||
|
Reference in New Issue
Block a user