В дополнение к моему previous question, я могу сохранить backbuffer Direct3DDevice на поверхность.Direct3D: Запись в файлы AVI
Я уже нашел D3DXSaveSurfaceToFile в DirectX SDK, и он отлично работает! Однако я хочу записать полученные поверхности в файл AVI.
Я также нашел AVIFile reference, но они явно несовместимы с DirectX-поверхностями.
Что было бы лучшим способом приблизиться к этой проблеме? Я видел несколько решений на основе GDI +/MVC для захвата HDC, но об этом не может быть и речи. Я также не уверен, какие данные AVIFile ожидает и как извлечь из D3DSurface.
Обратите внимание! :)
редактировать:
Постобработка также вариант. Я могу захватить поверхностные данные в нескольких форматах, указанных here, в память с D3DXSaveSurfaceToFileInMemory. Впоследствии я мог бы сжать эти данные, а затем сохранить их на диск.
Как мне сжимать данные? Как его хранить? Сохраняю ли я временную метку вместе с ней? После записи, как мне преобразовать сгенерированные данные в файл AVI?
Я посмотрел на это, и это связано с изменением цели рендеринга, а затем с копированием бэкбуффер. Это не возможность для меня, так как я просто подключаю API и не имею никакого контроля над исходным буфером. Я могу получить текущий backbuffer и накормить его что-то просто отлично. –
Кроме того, он требует, чтобы я подключался к CreateDevice/Reset/etc, который я действительно не хочу делать (накладывал бы ограничения на то, когда я должен начать вводить/подключать). –
@ Даниэль: Обновлен мой ответ. – Goz