Как я могу эффективно экземпляры объектов во время выполнения?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу эффективно экземпляры объектов во время выполнения?

Сообщение Anonymous »

Я делаю астрономическую игру, и я относительно новичок в открытии GL, однако у меня есть некоторый опыт работы в C ++. Моя основная проблема заключается в том, что когда я пытаюсь запустить этот конкретный код (см. Строку 432 / помечен), это заставляет его достичь Malloc. Как мне это предотвратить, и, пожалуйста, посоветуйте, как сделать мой код лучше. Мне очень жаль, если это нечитаемо, я все еще учусь. < /P>
отмеченная линия: < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»