From 7003823bedf3d92de846d581e86d49954cce4b1f Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Tue, 26 Jan 2010 08:32:39 +0000 Subject: [PATCH] minor tweak to BenchmarkDemo to enable toggling between console/graphical output Disable island manager for 3000 falling boxes: we need to add some batching rather then running thousands of single-body islands --- CMakeLists.txt | 5 +++- Demos/Benchmarks/BenchmarkDemo.cpp | 27 ++++++++++---------- Demos/Benchmarks/BenchmarkDemo.h | 3 ++- Demos/Benchmarks/CMakeLists.txt | 41 ++++++++++++++++++++++-------- Demos/Benchmarks/main.cpp | 12 +++++---- 5 files changed, 57 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ba7c42f95..22b5a2452 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,12 +10,15 @@ ENDIF (NOT CMAKE_BUILD_TYPE) OPTION(USE_DOUBLE_PRECISION "Use double precision" OFF) +OPTION(USE_GLUT_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON) IF (USE_DOUBLE_PRECISION) ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION) ENDIF (USE_DOUBLE_PRECISION) - +IF(USE_GLUT_GRAPHICAL_BENCHMARK) +ADD_DEFINITIONS( -DUSE_GLUT_GRAPHICAL_BENCHMARK) +ENDIF (USE_GLUT_GRAPHICAL_BENCHMARK) IF (WIN32) OPTION(USE_GLUT "Use Glut" OFF) diff --git a/Demos/Benchmarks/BenchmarkDemo.cpp b/Demos/Benchmarks/BenchmarkDemo.cpp index 9e575f58f..9b476b01c 100644 --- a/Demos/Benchmarks/BenchmarkDemo.cpp +++ b/Demos/Benchmarks/BenchmarkDemo.cpp @@ -17,9 +17,9 @@ subject to the following restrictions: #define COLLISION_RADIUS 0.0f #include "BenchmarkDemo.h" -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK #include "GlutStuff.h" -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK ///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files. #include "btBulletDynamicsCommon.h" @@ -178,7 +178,7 @@ public: void draw () { -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK glDisable (GL_LIGHTING); glColor3f (0.0, 1.0, 0.0); glBegin (GL_LINES); @@ -206,7 +206,7 @@ public: } glEnd (); glEnable (GL_LIGHTING); -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK } }; @@ -217,9 +217,9 @@ static btRaycastBar2 raycastBar; void BenchmarkDemo::clientMoveAndDisplay() { -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK //simple dynamics world doesn't handle fixed-time-stepping float ms = getDeltaTimeMicroseconds(); @@ -242,11 +242,11 @@ void BenchmarkDemo::clientMoveAndDisplay() renderme(); -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK glFlush(); glutSwapBuffers(); -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK } @@ -255,7 +255,7 @@ void BenchmarkDemo::clientMoveAndDisplay() void BenchmarkDemo::displayCallback(void) { -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); renderme(); @@ -266,7 +266,7 @@ void BenchmarkDemo::displayCallback(void) glFlush(); glutSwapBuffers(); -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK } @@ -313,7 +313,7 @@ void BenchmarkDemo::initPhysics() btDiscreteDynamicsWorld* dynamicsWorld; m_dynamicsWorld = dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_overlappingPairCache,m_solver,m_collisionConfiguration); - //dynamicsWorld->getSimulationIslandManager()->setSplitIslands(false); + dynamicsWorld->getSimulationIslandManager()->setSplitIslands(false); dynamicsWorld->getDispatchInfo().m_useConvexConservativeDistanceUtil = true; dynamicsWorld->getDispatchInfo().m_convexConservativeDistanceThreshold = btScalar(0.01); @@ -1224,7 +1224,8 @@ void BenchmarkDemo::exitPhysics() -#ifndef USE_GLUT_DEMO_APPLICATION +#ifndef USE_GLUT_GRAPHICAL_BENCHMARK + btRigidBody* DemoApplication::localCreateRigidBody(float mass, const btTransform& startTransform,btCollisionShape* shape) { btAssert((!shape || shape->getShapeType() != INVALID_SHAPE_PROXYTYPE)); @@ -1245,5 +1246,5 @@ btRigidBody* DemoApplication::localCreateRigidBody(float mass, const btTransform return body; } -#endif //USE_GLUT_DEMO_APPLICATION +#endif //USE_GLUT_GRAPHICAL_BENCHMARK diff --git a/Demos/Benchmarks/BenchmarkDemo.h b/Demos/Benchmarks/BenchmarkDemo.h index 6a533ced6..e64ffc4f8 100644 --- a/Demos/Benchmarks/BenchmarkDemo.h +++ b/Demos/Benchmarks/BenchmarkDemo.h @@ -32,7 +32,8 @@ class btConstraintSolver; struct btCollisionAlgorithmCreateFunc; class btDefaultCollisionConfiguration; -#ifndef USE_GLUT_DEMO_APPLICATION + +#ifndef USE_GLUT_GRAPHICAL_BENCHMARK ///empty placeholder class DemoApplication { diff --git a/Demos/Benchmarks/CMakeLists.txt b/Demos/Benchmarks/CMakeLists.txt index 4b24d3a3e..4e7146084 100644 --- a/Demos/Benchmarks/CMakeLists.txt +++ b/Demos/Benchmarks/CMakeLists.txt @@ -8,18 +8,37 @@ # You shouldn't have to modify anything below this line ######################################################## +IF (USE_GLUT_GRAPHICAL_BENCHMARK) + INCLUDE_DIRECTORIES( + ${BULLET_PHYSICS_SOURCE_DIR}/src + ${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL + ) -INCLUDE_DIRECTORIES( -${BULLET_PHYSICS_SOURCE_DIR}/src ${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL -) + LINK_LIBRARIES( + OpenGLSupport BulletDynamics BulletCollision LinearMath ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} + ) + + + ADD_EXECUTABLE(AppBenchmarks + main.cpp + BenchmarkDemo.cpp + BenchmarkDemo.h + ) +ELSE (USE_GLUT_GRAPHICAL_BENCHMARK) -LINK_LIBRARIES( - BulletDynamics BulletCollision LinearMath -) - -ADD_EXECUTABLE(AppBenchmarks - main.cpp - BenchmarkDemo.cpp -) + INCLUDE_DIRECTORIES( + ${BULLET_PHYSICS_SOURCE_DIR}/src + ${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL + ) + LINK_LIBRARIES( + BulletDynamics BulletCollision LinearMath + ) + + + ADD_EXECUTABLE(AppBenchmarks + main.cpp + BenchmarkDemo.cpp + ) +ENDIF (USE_GLUT_GRAPHICAL_BENCHMARK) \ No newline at end of file diff --git a/Demos/Benchmarks/main.cpp b/Demos/Benchmarks/main.cpp index 4bb7dad96..9027f7202 100644 --- a/Demos/Benchmarks/main.cpp +++ b/Demos/Benchmarks/main.cpp @@ -18,11 +18,12 @@ subject to the following restrictions: #include "LinearMath/btHashMap.h" #include -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK #include "GlutStuff.h" #include "GLDebugDrawer.h" GLDebugDrawer gDebugDrawer; -#endif //USE_GLUT_DEMO_APPLICATION +#define benchmarkDemo benchmarkDemo1 +#endif //USE_GLUT_GRAPHICAL_BENCHMARK #define NUM_DEMOS 7 @@ -46,10 +47,11 @@ int main(int argc,char** argv) char* demoNames[NUM_DEMOS] = {"3000 fall", "1000 stack", "136 ragdolls","1000 convex", "prim-trimesh", "convex-trimesh","raytests"}; float totalTime[NUM_DEMOS] = {0.f,0.f,0.f,0.f,0.f,0.f,0.f}; -#ifdef USE_GLUT_DEMO_APPLICATION +#ifdef USE_GLUT_GRAPHICAL_BENCHMARK + benchmarkDemo.initPhysics(); benchmarkDemo.getDynamicsWorld()->setDebugDrawer(&gDebugDrawer); return glutmain(argc, argv,640,480,"Bullet Physics Demo. http://bulletphysics.com",&benchmarkDemo); -#else +#else //USE_GLUT_GRAPHICAL_BENCHMARK int d; for (d=0;d