Как вы получаете вывод вычисления HLSL? - PullRequest
3 голосов
/ 13 июня 2011

Я бы хотел сделать снимок экрана с результатом графического процессора в файл растрового изображения, используя .NET Я бы, вероятно, использовал XNA, и мой рабочий процесс был бы что-то вроде:

  1. Вызов эффекта с пользовательскими входными данными
  2. Эффект запускает процесс на пиксель
  3. Получить результат от эффекта (???)
  4. Сохранить результат как растровое изображение

Спасибо ...


Редактировать

Резюме из ответа Лиортала :

Чтобы использовать цель рендеринга, создайте RenderTarget2D объект с шириной, Высота и другие варианты, которые вы предпочитаете. Тогда позвони GraphicsDevice.SetRenderTarget, чтобы сделать Ваш рендер нацелен на текущий рендер цель. С этого момента любая ничья звонки, которые вы делаете, будут втягиваться в ваш сделать цель. Когда вы закончите с целью рендеринга, вызов GraphicsDevice.SetRenderTarget to a новая цель рендеринга (или ноль для задний буфер). Тогда в любое время вы можете вызовите RenderTarget2D.GetTexture, чтобы получить содержимое цели рендеринга для дальнейшая обработка.

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Подробнее о целях рендеринга и о том, как их использовать, можно узнать здесь: http://msdn.microsoft.com/en-us/library/bb976073.aspx

Обратите внимание, что ссылка относится к XNA 3.1, вот статья удивительного Шона Харгривза об изменениях, сделанных в этой области в XNA4: http://blogs.msdn.com/b/shawnhar/archive/2010/03/26/rendertarget-changes-in-xna-game-studio-4-0.aspx

2 голосов
/ 13 июня 2011

RenderTarget это то, что вы после здесь.Установите RenderTarget (graphicsDevice.SetRenderTarget(myRenderTarget);), нарисуйте свою сцену и затем используйте методы SaveAsJpeg или SaveAsPng для сохранения вывода.

Вот версия XNA 4 RenderTarget документация.

Однако, люди упоминали об утечках памяти, поэтому я бы использовал эту альтернативу:

BmpWriter

Эта ссылка имеет источниккод, который вам требуется (как я уже упоминал выше).

...