PhysX 3.2.0 + OpenGL how to render TriangleMesh?

I can’t render my TriangleMesh. In PhysX Visual Debugger it looks fine but when I try to render it in OpenGL it looks likes this:

PVD:

Here’s my code:

void DrawTriangleMeshActor(PxShape* pShape)
{
	PxTransform pT = PxShapeExt::getGlobalPose(*pShape);
	PxTriangleMeshGeometry tg;
	pShape->getTriangleMeshGeometry(tg);
	
	PxMat33 m = PxMat33(pT.q );
	float mat[16];
	getColumnMajor(m,pT.p,mat);
	
	glPushMatrix();
		glMultMatrixf(mat);
		glEnableClientState(GL_VERTEX_ARRAY);	
		glVertexPointer(3, GL_FLOAT, 0, tg.triangleMesh->getVertices() );
		glDrawArrays(GL_TRIANGLES, 0 , tg.triangleMesh->getNbTriangles() );	
		glDisableClientState(GL_VERTEX_ARRAY);    
	glPopMatrix();

Try change:
glDrawArrays(GL_TRIANGLES, 0 , tg.triangleMesh->getNbTriangles() );
to:
glDrawArrays(GL_TRIANGLES, 0 , tg.triangleMesh->getNbVertices() );

Still doesn’t work.

Here’s another part of code.

void DrawShape(PxShape* shape)
{
	PxGeometryType::Enum type = shape->getGeometryType();
    switch(type) 
    {          
		case PxGeometryType::eBOX:
			DrawBox(shape);
		break;
		case PxGeometryType::eSPHERE :
			DrawSphere(shape);
		break;
		case PxGeometryType::eTRIANGLEMESH:
			DrawTriangleMeshActor(shape);
		break;
    } 
}
void DrawActor(PxRigidActor* actor)
{
	PxU32 nShapes = actor->getNbShapes(); 
    PxShape** shapes=new PxShape*[nShapes];
	
	actor->getShapes(shapes, nShapes);    
    while (nShapes--) 
    { 
        DrawShape(shapes[nShapes]); 
    } 
	delete [] shapes;
}

I found the solution.

glPushMatrix();
		glMultMatrixf(mat);
		glEnableClientState(GL_VERTEX_ARRAY);	
		glVertexPointer(3, GL_FLOAT, 0, tg.triangleMesh->getVertices() );
		glDrawElements(GL_TRIANGLES, 3 * tg.triangleMesh->getNbTriangles() , GL_UNSIGNED_SHORT  ,  tg.triangleMesh->getTriangles() );
		glDisableClientState(GL_VERTEX_ARRAY);  
	glPopMatrix();