graphicsServer to workaround OpenGL issues on some servers.

This commit is contained in:
Erwin Coumans
2019-06-13 23:24:22 -07:00
parent dc9549b2b4
commit 6160b52fd7
22 changed files with 1091 additions and 21 deletions

View File

@@ -821,6 +821,46 @@ public:
{
m_childGuiHelper->syncPhysicsToGraphics(rbWorld);
}
{
b3AlignedObjectArray<GUISyncPosition> updatedPositions;
int numCollisionObjects = rbWorld->getNumCollisionObjects();
{
B3_PROFILE("write all InstanceTransformToCPU2");
for (int i = 0; i < numCollisionObjects; i++)
{
//B3_PROFILE("writeSingleInstanceTransformToCPU");
btCollisionObject* colObj = rbWorld->getCollisionObjectArray()[i];
btCollisionShape* collisionShape = colObj->getCollisionShape();
btVector3 pos = colObj->getWorldTransform().getOrigin();
btQuaternion orn = colObj->getWorldTransform().getRotation();
int index = colObj->getUserIndex();
if (index >= 0)
{
GUISyncPosition p;
p.m_graphicsInstanceId = index;
for (int q = 0; q < 4; q++)
{
p.m_pos[q] = pos[q];
p.m_orn[q] = orn[q];
}
updatedPositions.push_back(p);
}
}
}
if (updatedPositions.size())
{
syncPhysicsToGraphics2(&updatedPositions[0], updatedPositions.size());
}
}
}
virtual void syncPhysicsToGraphics2(const GUISyncPosition* positions, int numPositions)
{
m_childGuiHelper->syncPhysicsToGraphics2(positions, numPositions);
}
virtual void render(const btDiscreteDynamicsWorld* rbWorld)