use freeglut by default under Windows

This commit is contained in:
ejcoumans
2007-12-14 02:48:53 +00:00
parent 38349b5af4
commit 9e25108b06
8 changed files with 44 additions and 21 deletions

View File

@@ -225,6 +225,10 @@ void MouseMotion(int x, int y)
demo->mouseMotionFunc(x,y); demo->mouseMotionFunc(x,y);
} }
#if (defined (WIN32) && defined (_MSC_VER))
#include "GL/freeglut_ext.h"
#endif
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@@ -237,8 +241,9 @@ int main(int argc, char** argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE |GLUT_DEPTH); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE |GLUT_DEPTH);
glutInitWindowSize(width, height); glutInitWindowSize(width, height);
mainWindow = glutCreateWindow("http://bulletphysics.com"); mainWindow = glutCreateWindow("http://bulletphysics.com");
//glutSetOption (GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS); #if (defined (WIN32) && defined (_MSC_VER))
glutSetOption (GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
#endif
entry = g_demoEntries + testIndex; entry = g_demoEntries + testIndex;
demo = CreatDemo(entry); demo = CreatDemo(entry);

View File

@@ -649,6 +649,7 @@ void CcdPhysicsDemo::exitPhysics()
for (int j=0;j<m_collisionShapes.size();j++) for (int j=0;j<m_collisionShapes.size();j++)
{ {
btCollisionShape* shape = m_collisionShapes[j]; btCollisionShape* shape = m_collisionShapes[j];
m_collisionShapes[j] = 0;
delete shape; delete shape;
} }

View File

@@ -29,5 +29,8 @@ int main(int argc,char** argv)
ccdDemo->getDynamicsWorld()->setDebugDrawer(&gDebugDrawer); ccdDemo->getDynamicsWorld()->setDebugDrawer(&gDebugDrawer);
return glutmain(argc, argv,640,480,"Bullet Physics Demo. http://bullet.sf.net",ccdDemo); glutmain(argc, argv,640,480,"Bullet Physics Demo. http://bullet.sf.net",ccdDemo);
delete ccdDemo;
} }

View File

@@ -235,8 +235,6 @@ void DemoApplication::reshape(int w, int h)
} }
void DemoApplication::keyboardCallback(unsigned char key, int x, int y) void DemoApplication::keyboardCallback(unsigned char key, int x, int y)
{ {
(void)x; (void)x;
@@ -257,7 +255,14 @@ void DemoApplication::keyboardCallback(unsigned char key, int x, int y)
switch (key) switch (key)
{ {
case 'q' : exit(0); break; case 'q' :
#if (defined (WIN32) && defined (_MSC_VER))
//return from glutMainLoop(), detect memory leaks etc.
glutLeaveMainLoop();
#else
exit();
#endif
break;
case 'l' : stepLeft(); break; case 'l' : stepLeft(); break;
case 'r' : stepRight(); break; case 'r' : stepRight(); break;

View File

@@ -17,18 +17,7 @@ subject to the following restrictions:
#define DEMO_APPLICATION_H #define DEMO_APPLICATION_H
#ifdef WIN32//for glut.h #include "GlutStuff.h"
#include <windows.h>
#endif
//think different
#if defined(__APPLE__) && !defined (VMDMESA)
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>

View File

@@ -66,7 +66,6 @@ static void glutDisplayCallback(void)
} }
int glutmain(int argc, char **argv,int width,int height,const char* title,DemoApplication* demoApp) { int glutmain(int argc, char **argv,int width,int height,const char* title,DemoApplication* demoApp) {
gDemoApplication = demoApp; gDemoApplication = demoApp;
@@ -76,6 +75,9 @@ int glutmain(int argc, char **argv,int width,int height,const char* title,DemoAp
glutInitWindowPosition(0, 0); glutInitWindowPosition(0, 0);
glutInitWindowSize(width, height); glutInitWindowSize(width, height);
glutCreateWindow(title); glutCreateWindow(title);
#if (defined (WIN32) && defined (_MSC_VER))
glutSetOption (GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
#endif
gDemoApplication->myinit(); gDemoApplication->myinit();

View File

@@ -15,6 +15,24 @@ subject to the following restrictions:
#ifndef GLUT_STUFF_H #ifndef GLUT_STUFF_H
#define GLUT_STUFF_H #define GLUT_STUFF_H
#ifdef WIN32//for glut.h
#include <windows.h>
#endif
//think different
#if defined(__APPLE__) && !defined (VMDMESA)
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#if (defined (WIN32) && defined (_MSC_VER))
#include "GL/freeglut_ext.h" //to be able to return from glutMainLoop()
#endif
class DemoApplication; class DemoApplication;
int glutmain(int argc, char **argv,int width,int height,const char* title,DemoApplication* demoApp); int glutmain(int argc, char **argv,int width,int height,const char* title,DemoApplication* demoApp);

View File

@@ -77,7 +77,7 @@ public:
return false; return false;
} }
void free(void* ptr) void freeMemory(void* ptr)
{ {
if (ptr) { if (ptr) {
btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize); btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize);