我正在使用reselect和denormalizr来避免在每次更改时进行反规范化,但我真的不知道这是否真的在改进。
btConvexHullShape* tableShape = new btConvexHullShape();
int numMeshes = table.meshes.size();
for (int i = 0; i < numMeshes; i++)
{
Mesh _tempMesh = table.meshes[i];
int numVertices = table.meshes[i].vertices.size();
for (int j = 0; j < numVertices; j++)
{
glm::vec3 _tempPos = _tempMesh.vertices[j].Position;
tableShape->addPoint(btVector3(_tempPos.x, _tempPos.y, _tempPos.z));
}
}
btDefaultMotionState* fallMotionState =
new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(table.position.x, table.position.y, table.position.z)));
btScalar mass = 1;
btVector3 fallInertia(0, 0, 0);
tableShape->calculateLocalInertia(mass, fallInertia);
btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass, fallMotionState, tableShape, fallInertia);
fallRigidBodyCI.m_restitution = 0;
btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI);
dynamicsWorld->addRigidBody(fallRigidBody);
答案 0 :(得分:0)
规则通常是在您真正需要之前不优化代码。如果您不知道是否需要优化,则可能会出现过早优化的情况。
在这种情况下,如果它减慢你的应用程序,你应该这样做。问题往往是知道这是否真的减慢了你的应用程序。 您可以使用监视工具或只是注释/取消注释代码并触发状态更改,并查看您的应用是否保持响应状态而不重新选择。
答案 1 :(得分:0)
您的实体图会在每次更改时(针对当前对象或某些完全不同的对象)进行修改。重新选择denornalize的输出不会提高性能,因为它会在每次调用时返回一个新对象。当任何实体发生更改时,都会调用重新选择器,因此每次仍然是调用。