• Как в ировом движке на C++ распаралерить функции Update и Render?

    @Anaflion
    mayton2019, может быть - если нужен вывод неблокирующий пользоваться "syncstream" ?

    Источник кода

    #include <syncstream>
    #include <iostream>
    int main() {
      
      std::osyncstream bout1(std::cout);
      bout1 << "Hello, ";
      {
          std::osyncstream(bout1.get_wrapped()) << "Goodbye, " << "Planet!" << '\n';
      } // emits the contents of the temporary buffer
      
      bout1 << "World!" << '\n';
      
    } // emits the contents of bout1
    Написано
  • Как в ировом движке на C++ распаралерить функции Update и Render?

    @Anaflion
    Не могли бы вы обозначить на пальцах содержание этих двух методов, чтобы понять - где там границы критической секции и как оная выбрана... Мне интересно - и для самообразования. На чем пишете? На Vulkan, OpenGL?

    Но интересна сама суть - Update() расставляет геометрию и эффекты? Или отсекает от сцены то, что попадет в Render? В то время когда Render() рисует участок сцены, которая у вас попадает в обзор?

    Рендер будет "молотить" в любом случае, поэтому многопоточная работа у вас происходит именно в расстановке геометрии и эффектов - в Update? Или наоборот...

    Если Update лишь формирует поле обзора камеры игрока для Render с преобразованием участка 3D сцены в 2D изображение экрана то... Оный должен без блокировок читать Мир - который в свою очередь наполняется сущностями из вектора Entityes (это же у вас вектор состояний и объектов?) А наполнять Entityes должны уже некие потоки - сущности - активности игры, такие как игроки, неписи и эффекты мира? :) Я впервые разговариваю с разрабочиком движка - очень интересно.
    Написано