У меня есть мяч, который я должен упасть с высоты, и он должен вести себя так, как в реальном мире, это означает, что он должен упасть с g = 9,8, а также отскочить назад. может ли кто-нибудь сказать мне, как я могу сделать это в открытом gl в c ++?

-4
Mahtab 6 Мар 2011 в 21:01
8
OpenGL - это графический API низкого уровня, а не полноценный физический, игровой или даже графический движок.
 – 
The Communist Duck
6 Мар 2011 в 21:50

3 ответа

Лучший ответ

OpenGL предназначен только для рисования трехмерной графики, он ничего не знает о таких понятиях, как скорость, масса, скорость, время, ускорение и гравитация (или подсчет калорий в пироге с ревенем, если на то пошло).

Вам нужен физический движок или простая физическая симуляция:

Простой покадровый цикл выглядит примерно так:

  • dt = time_now - time_prev_frame
  • acc = -9,8
  • vel + = acc * dt
  • pos + = vel * dt
  • рисовать объект на позиции

При этом есть люди, которые реализуют системы частиц с использованием графических процессоров OpenGL для моделирования, но затем адаптируют графические концепции, примитивы и вычисления для вычисления положений и скоростей, реализуя сами физические уравнения.

12
Macke 14 Фев 2014 в 10:15

OpenGL - это не игровой движок. OpenGL просто рисует содержимое на экране. Он рисует треугольники. То, как он рисует этот материал, определяется такими параметрами, как освещение и текстуры, и может быть точно настроен шейдерами, но это все.

Вам нужен игровой движок.

6
datenwolf 6 Мар 2011 в 21:36

Прошло немного времени с тех пор, как я начал программировать OpenGL, но в последний раз, когда я видел, не было функции «включить гравитацию».

Точное поведение «как он ведет себя в реальном мире» (так в оригинале) очень недооценено. Какой материал? Какая температура? Какая форма? И так далее.

Возможно, вы захотите начать с чтения статьи википедии Physics Engine.

5
Ken 6 Мар 2011 в 21:10