Смешивание неуправляемого C ++ с F # для выполнения физики: стоит ли?

Я собираюсь начать писать 3D-игру на неуправляемом C ++, используя DirectX SDK. Он будет включать в себя много физики и математики, хотя я не могу предсказать, насколько это будет сложно (я не знаю, буду ли я распараллеливать это, например). Я подумал, из-за возможности F # невероятно крутых единиц измерения и того факта, что она функциональна и, следовательно, хорошо распараллеливается, я мог бы написать библиотеку F # для выполнения сложных математических вычислений в игре. Но:

  • Я неопытен в C ++, не говоря уже о том, чтобы взаимодействовать с ним с управляемым кодом. Я не знаю, насколько это будет неприятно.
  • Я не знаю, насколько большим будет замедление перехода в управляемую DLL и обратно для каждое математическое вычисление (по крайней мере, одно физическое уравнение должно выполняться за итерацию игры).
  • Я не уверен, что выигрыш в единицах m Простота и легкость распараллеливания того стоит. Я имею в виду, что если это просто математика, в любом случае должно быть легко реализовать потоки в C ++ (на самом деле нет никаких побочных эффектов, и, если я помню, есть ключевое слово pure в C ++, может быть, оно запрещает побочные эффекты или что-то в этом роде?) - и я полагаю, что мог бы обойтись без единиц измерения, если бы я был очень осторожен (я знаю, что буду использовать только метрические единицы).

Так оно того стоит? Является ли смешивание управляемого и неуправляемого кода обычной практикой? А что насчет игр? Будет ли это узким местом? Сделал бы мой код отрисовки ужасающим и запутанным? Если вы открыли проект VC ++ и увидели, как это происходит - как бы выглядело ваше лицо (:) : ( D: и т. Д.)

5
задан Carson Myers 16 February 2011 в 04:24
поделиться