bullet3/Demos3/GpuDemos/GpuDemo.h

81 lines
1.8 KiB
C
Raw Normal View History

2013-03-13 22:03:08 +00:00
#ifndef GPU_DEMO_H
#define GPU_DEMO_H
class GLInstancingRenderer;
class GLPrimitiveRenderer;
2013-03-13 22:03:08 +00:00
2013-03-22 00:36:52 +00:00
2013-03-13 22:03:08 +00:00
class GpuDemo
{
protected:
struct GpuDemoInternalData* m_clData;
virtual void initCL(int preferredDeviceIndex, int preferredPlatformIndex);
virtual void exitCL();
public:
typedef class GpuDemo* (CreateFunc)();
struct ConstructionInfo
2013-03-20 03:06:24 +00:00
{
bool useOpenCL;
int preferredOpenCLPlatformIndex;
int preferredOpenCLDeviceIndex;
int arraySizeX;
int arraySizeY;
int arraySizeZ;
bool m_useConcaveMesh;
float gapX;
float gapY;
float gapZ;
bool m_useInstancedCollisionShapes;
2013-03-20 03:06:24 +00:00
GLInstancingRenderer* m_instancingRenderer;
GLPrimitiveRenderer* m_primRenderer;
class b3gWindowInterface* m_window;
class GwenUserInterface* m_gui;
2013-03-20 03:06:24 +00:00
ConstructionInfo()
:useOpenCL(true),
preferredOpenCLPlatformIndex(-1),
preferredOpenCLDeviceIndex(-1),
arraySizeX(30),
arraySizeY(30),
arraySizeZ(30),
2013-03-20 03:06:24 +00:00
m_useConcaveMesh(false),
2013-03-22 23:24:09 +00:00
gapX(14.3),
gapY(14.0),
gapZ(14.3),
m_useInstancedCollisionShapes(true),
2013-03-20 03:06:24 +00:00
m_instancingRenderer(0),
m_window(0),
m_gui(0)
2013-03-20 03:06:24 +00:00
{
}
};
2013-03-13 22:03:08 +00:00
GpuDemo();
virtual ~GpuDemo();
virtual const char* getName()=0;
virtual void initPhysics(const ConstructionInfo& ci)=0;
virtual void exitPhysics()=0;
virtual void renderScene()=0;
virtual void clientMoveAndDisplay()=0;
int registerGraphicsSphereShape(const ConstructionInfo& ci, float radius, bool usePointSprites=true, int largeSphereThreshold=100, int mediumSphereThreshold=10);
2013-03-13 22:03:08 +00:00
struct GpuDemoInternalData* getInternalData();
2013-03-13 22:03:08 +00:00
};
#endif