Bullet Collision Detection & Physics Library
Public Member Functions | Protected Attributes | List of all members
btStridingMeshInterface Class Referenceabstract

The btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes. More...

#include <btStridingMeshInterface.h>

Inheritance diagram for btStridingMeshInterface:
Inheritance graph
[legend]
Collaboration diagram for btStridingMeshInterface:
Collaboration graph
[legend]

Public Member Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btStridingMeshInterface ()
 
virtual ~btStridingMeshInterface ()
 
virtual void InternalProcessAllTriangles (btInternalTriangleIndexCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
 
void calculateAabbBruteForce (btVector3 &aabbMin, btVector3 &aabbMax)
 brute force method to calculate aabb More...
 
virtual void getLockedVertexIndexBase (unsigned char **vertexbase, int &numverts, PHY_ScalarType &type, int &stride, unsigned char **indexbase, int &indexstride, int &numfaces, PHY_ScalarType &indicestype, int subpart=0)=0
 get read and write access to a subpart of a triangle mesh this subpart has a continuous array of vertices and indices in this way the mesh can be handled as chunks of memory with striding very similar to OpenGL vertexarray support make a call to unLockVertexBase when the read and write access is finished More...
 
virtual void getLockedReadOnlyVertexIndexBase (const unsigned char **vertexbase, int &numverts, PHY_ScalarType &type, int &stride, const unsigned char **indexbase, int &indexstride, int &numfaces, PHY_ScalarType &indicestype, int subpart=0) const =0
 
virtual void unLockVertexBase (int subpart)=0
 unLockVertexBase finishes the access to a subpart of the triangle mesh make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished More...
 
virtual void unLockReadOnlyVertexBase (int subpart) const =0
 
virtual int getNumSubParts () const =0
 getNumSubParts returns the number of seperate subparts each subpart has a continuous array of vertices and indices More...
 
virtual void preallocateVertices (int numverts)=0
 
virtual void preallocateIndices (int numindices)=0
 
virtual bool hasPremadeAabb () const
 
virtual void setPremadeAabb (const btVector3 &aabbMin, const btVector3 &aabbMax) const
 
virtual void getPremadeAabb (btVector3 *aabbMin, btVector3 *aabbMax) const
 
const btVector3getScaling () const
 
void setScaling (const btVector3 &scaling)
 
virtual int calculateSerializeBufferSize () const
 
virtual const char * serialize (void *dataBuffer, btSerializer *serializer) const
 fills the dataBuffer and returns the struct name (and 0 on failure) More...
 

Protected Attributes

btVector3 m_scaling
 

Detailed Description

The btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes.

Using index striding of 3*sizeof(integer) it can use triangle arrays, using index striding of 1*sizeof(integer) it can handle triangle strips. It allows for sharing graphics and collision meshes. Also it provides locking/unlocking of graphics meshes that are in gpu memory.

Definition at line 30 of file btStridingMeshInterface.h.

Constructor & Destructor Documentation

btStridingMeshInterface::btStridingMeshInterface ( )
inline

Definition at line 39 of file btStridingMeshInterface.h.

btStridingMeshInterface::~btStridingMeshInterface ( )
virtual

Definition at line 19 of file btStridingMeshInterface.cpp.

Member Function Documentation

btStridingMeshInterface::BT_DECLARE_ALIGNED_ALLOCATOR ( )
void btStridingMeshInterface::calculateAabbBruteForce ( btVector3 aabbMin,
btVector3 aabbMax 
)

brute force method to calculate aabb

Definition at line 176 of file btStridingMeshInterface.cpp.

int btStridingMeshInterface::calculateSerializeBufferSize ( ) const
inlinevirtual

Definition at line 157 of file btStridingMeshInterface.h.

virtual void btStridingMeshInterface::getLockedReadOnlyVertexIndexBase ( const unsigned char **  vertexbase,
int &  numverts,
PHY_ScalarType type,
int &  stride,
const unsigned char **  indexbase,
int &  indexstride,
int &  numfaces,
PHY_ScalarType indicestype,
int  subpart = 0 
) const
pure virtual

Implemented in btTriangleIndexVertexArray.

virtual void btStridingMeshInterface::getLockedVertexIndexBase ( unsigned char **  vertexbase,
int &  numverts,
PHY_ScalarType type,
int &  stride,
unsigned char **  indexbase,
int &  indexstride,
int &  numfaces,
PHY_ScalarType indicestype,
int  subpart = 0 
)
pure virtual

get read and write access to a subpart of a triangle mesh this subpart has a continuous array of vertices and indices in this way the mesh can be handled as chunks of memory with striding very similar to OpenGL vertexarray support make a call to unLockVertexBase when the read and write access is finished

Implemented in btTriangleIndexVertexArray.

virtual int btStridingMeshInterface::getNumSubParts ( ) const
pure virtual

getNumSubParts returns the number of seperate subparts each subpart has a continuous array of vertices and indices

Implemented in btTriangleIndexVertexArray.

virtual void btStridingMeshInterface::getPremadeAabb ( btVector3 aabbMin,
btVector3 aabbMax 
) const
inlinevirtual

Reimplemented in btTriangleIndexVertexArray.

Definition at line 82 of file btStridingMeshInterface.h.

const btVector3& btStridingMeshInterface::getScaling ( ) const
inline

Definition at line 88 of file btStridingMeshInterface.h.

virtual bool btStridingMeshInterface::hasPremadeAabb ( ) const
inlinevirtual

Reimplemented in btTriangleIndexVertexArray.

Definition at line 76 of file btStridingMeshInterface.h.

void btStridingMeshInterface::InternalProcessAllTriangles ( btInternalTriangleIndexCallback callback,
const btVector3 aabbMin,
const btVector3 aabbMax 
) const
virtual

if the number of parts is big, the performance might drop due to the innerloop switch on indextype

unlike that developers want to pass in double-precision meshes in single-precision Bullet build so disable this feature by default see patch http://code.google.com/p/bullet/issues/detail?id=213

Definition at line 25 of file btStridingMeshInterface.cpp.

virtual void btStridingMeshInterface::preallocateIndices ( int  numindices)
pure virtual
virtual void btStridingMeshInterface::preallocateVertices ( int  numverts)
pure virtual
const char * btStridingMeshInterface::serialize ( void *  dataBuffer,
btSerializer serializer 
) const
virtual

fills the dataBuffer and returns the struct name (and 0 on failure)

if the number of parts is big, the performance might drop due to the innerloop switch on indextype

Definition at line 217 of file btStridingMeshInterface.cpp.

virtual void btStridingMeshInterface::setPremadeAabb ( const btVector3 aabbMin,
const btVector3 aabbMax 
) const
inlinevirtual

Reimplemented in btTriangleIndexVertexArray.

Definition at line 77 of file btStridingMeshInterface.h.

void btStridingMeshInterface::setScaling ( const btVector3 scaling)
inline

Definition at line 91 of file btStridingMeshInterface.h.

virtual void btStridingMeshInterface::unLockReadOnlyVertexBase ( int  subpart) const
pure virtual

Implemented in btTriangleIndexVertexArray.

virtual void btStridingMeshInterface::unLockVertexBase ( int  subpart)
pure virtual

unLockVertexBase finishes the access to a subpart of the triangle mesh make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished

Implemented in btTriangleIndexVertexArray.

Member Data Documentation

btVector3 btStridingMeshInterface::m_scaling
protected

Definition at line 34 of file btStridingMeshInterface.h.


The documentation for this class was generated from the following files: