Как правильно реализовать многопоточный рендер в .NET?

Доброе время суток!

Сейчас пытаюсь реализовать многопоточный графический движек с использованием .NET. И хочу разобраться с различными аспектами его правильной реализации. Есть несколько вопросов:
  • Допустимо ли в главном потоке проводить рендеринг, а во втором(фоновом) в момент рисования проводить обновление данных?
  • Правильно ли использовать Thread для такого потока, с таким бесконечным циклом:do { ...} while(canRunThread); ?
    И внутри этого цикла использовать Task для асинхронной работы функции обновления?

  • Как правильно обеспечивается взаимодействие потоков? Есть ли возможность использовать события или асинхронность?
  • Будет ли ускорение рендеринга при использовании дополнительного буфера? Логика такова - в основном потоке крутится приложение, в фоновом потоке крутится рендерер, который рисует в условный буфер, битмап и т.д., а в остальных потоках физика, логика, и т.д. После того, как эти потоки обновления состояния завершили работу, они сохраняют результат в памяти и начинают по новой, поток-рендерер рисует этот результат в битмап, и когда закончит
    - основной поток отрисовывает этот битмап-буфер на экране. Или достаточно обойтись просто хранением результата и рендерить при его обновлении?
  • Вопрос задан
  • 841 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы