Программирование графического процессора на Xbox 360

StackOverflow https://stackoverflow.com/questions/125462

  •  02-07-2019
  •  | 
  •  

Вопрос

Я ищу некоторое представление о XNA на Xbox 360, в основном, возможно ли запустить векторную математику с плавающей запятой на своем графическом процессоре?

Если есть какой-то способ, не могли бы вы указать мне правильное направление?

Это было полезно?

Решение

Я не претендую на звание эксперта в этом вопросе, но, надеюсь, это может указать вам полезное направление.

Возможно ли это?ДА.Вы, вероятно, уже знаете, что графический процессор хорош в таких вычислениях (отсюда и вопрос), и вы действительно можете управлять графическим процессором с помощью XNA.Будет ли это соответствовать вашим потребностям - это другой вопрос.

Чтобы использовать графический процессор, вы, вероятно, захотите написать шейдеры, используя HLSL.Есть достойное введение в HLSL в контексте XNA на Реймерс с которым вы, возможно, захотите ознакомиться.Примечательно, что в этом руководстве основное внимание уделяется тому, как заставить GPU выполнять обработку, связанную с графикой, но то, что вы пишете в шейдерах, зависит от вас.Если ваша векторная математика с плавающей запятой предназначена для рендеринга (и, следовательно, может оставаться в домене GPU), вам повезло, и вы можете остановиться на этом.

Скорее всего, рендеринг на экране - это не то, что вам нужно.Теперь у вас есть достаточная гибкость в HLSL в том, что касается выполнения вашей математики.Однако передача результатов в центральный процессор - это не то, как была спроектирована система.Для меня это становится расплывчатым, но Шон Харгривз (разработчик XNA) заявляет о Еще чем один случай то, что получение выходных данных с графического процессора (отличных от отображения на экране) нетривиально и имеет последствия для производительности.Извлечение данных включает в себя вызов getData, который будет привести к остановке трубопровода.

Так что это можно сделать.Платформа XNA Framework позволит вам писать шейдеры для 360 (которая поддерживает шейдерную модель 3.0 плюс несколько расширений), и это является возможно, вы получите эти результаты, хотя это может быть недостаточно эффективно для ваших нужд.

Другие советы

Как было указано выше, XBox360 полностью поддерживает любые вычисления HLSL и, в частности, он может обрабатывать команды вершинного и пиксельного шейдера model 3 и имеет расширенный набор инструкций, специфичных для данной платформы.

Поскольку HLSL на самом деле основан на векторах, у вас есть все необходимые инструменты - точечные, перекрестные, векторные операции и матричные вычисления.Если вы хотите отправить вычисления на графический процессор и отредактировать / использовать результаты на центральном процессоре, вы можете записать текстуру, а затем извлечь ее на стороне центрального процессора и декодировать - использование ее для частиц или физических взаимодействий (таких как вода) - это лишь немногие случаи, когда вам может понадобиться это сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top