отмеченная линия: < /p>
Код: Выделить всё
while (!glfwWindowShouldClose(window) && running == true) {
// some IMGUI code here
for (auto& obj : objs) {
glUniform4f(objectColorLoc, obj.color.r, obj.color.g, obj.color.b, obj.color.a);
if (obj.ObjectClass == 1) {
// this line here!
objs.emplace_back(glm::vec3(obj.GetPos()[0], obj.GetPos()[1], obj.GetPos()[2]), glm::vec3(0, 0, 0), 10, 10, glm::vec4(6.0f, 4.929f, 0.176f, 1.0f), 2, true);
}
//acceleration code and mass and gravity
for (auto& obj2 : objs) {
if (&obj2 != &obj && !obj.Initalizing && !obj2.Initalizing) {
float dx = obj2.GetPos()[0] - obj.GetPos()[0];
float dy = obj2.GetPos()[1] - obj.GetPos()[1];
float dz = obj2.GetPos()[2] - obj.GetPos()[2];
float distance = sqrt(dx * dx + dy * dy + dz * dz);
if (distance > 0) {
std::vector direction = { dx / distance, dy / distance, dz / distance };
distance *= 1000;
double Gforce = (G * obj.mass * obj2.mass) / (distance * distance);
float acc1 = Gforce / obj.mass;
std::vector acc = { direction[0] * acc1, direction[1] * acc1, direction[2] * acc1 };
if (!pause) {
obj.accelerate(acc[0], acc[1], acc[2]);
}
obj.velocity *= obj.CheckCollision(obj2);
std::cout
0 - родительская звезда
1 - детская планета
2 - объект Foriegn
3- Другая звезда < /p>
Поскольку объект - 1 (планета), появился рядом с ним. Я думал, что это предотвратит нерестный объект на объект, так как я добавляю к вектору объектов.
Это добавило некоторую производительность, но я все еще достигаю Malloc. } Я использую gldrawarrays для экземпляра моих треугольников.
Подробнее здесь: https://stackoverflow.com/questions/796 ... fficiently