




Я не претендую на то, чтобы быть экспертом в этом вопросе, но, надеюсь, это может указать вам в полезном направлении.
Является ли это возможным? Да. Вы, вероятно, уже знаете, что графический процессор хорош в таких вычислениях (отсюда вопрос), и вы действительно можете управлять графическим процессором с помощью XNA. Будет ли он соответствовать вашим потребностям - другой вопрос.
Чтобы использовать графический процессор, вы, вероятно, захотите писать шейдеры с использованием HLSL. В Реймерс есть достойное введение в HLSL в контексте XNA, которое вы, возможно, захотите пройти. Примечательно, что в этом руководстве основное внимание уделяется тому, чтобы GPU выполнял обработку графики, но то, что вы пишете в шейдерах, зависит от вас. Если ваша векторная математика с плавающей запятой предназначена для рендеринга (и, следовательно, может оставаться в области графического процессора), вам повезло, и вы можете остановиться на этом.
Вероятный рендеринг на экране - это не то, что вам нужно. Теперь у вас есть изрядная гибкость в HLSL в том, что касается ваших математических расчетов. Однако передача результатов в ЦП - это не то, как была спроектирована система. Это становится нечетким для меня, но Шон Харгривз (разработчик XNA) заявляет на более, а не на один раз, что получение вывода от графического процессора (кроме визуализированного на экране) нетривиально и влияет на производительность. Получение данных включает вызов GetData, который будет вызвать остановку трубопровода.
Так что это можно сделать. Фреймворк XNA позволит вам писать шейдеры для 360 (который поддерживает Shader Model 3.0 плюс несколько расширений), и является позволяет получить эти результаты, хотя это может быть недостаточно эффективным для ваших нужд.
Как было сказано выше, XBox360 полностью поддерживает любые вычисления HLSL и, в частности, он может обрабатывать инструкции модели 3 вершинных и пиксельных шейдеров и имеет расширенный набор инструкций, специфичных для данной платформы.
Поскольку HLSL на самом деле является векторным, у вас есть все необходимые инструменты - точечные, перекрестные, векторные операции и матричные вычисления. Если вы хотите отправлять вычисления в графический процессор и редактировать / использовать результаты на процессоре, вы можете записать в текстуру, а затем получить ее на стороне процессора и декодировать ее - использование ее для частиц или физических взаимодействий (таких как вода) - лишь немногие случаи, когда вы можете захотеть это сделать.