У меня есть приложение для Windows, которое в настоящее время визуализирует графику в основном с использованием MFC, которое я хотел бы изменить, чтобы лучше использовать графический процессор.Большая часть графики проста и может быть легко встроена в граф сцены, но часть графики может оказаться очень сложной.В частности, в дополнение к обычным объектам типа сетки, я также имею дело с облаками точек, которые могут содержать миллиарды декартовых чисел, хранящихся в очень компактном виде, использующем довольно много пользовательских методов отбора для отображения в режиме реального времени (*Пример 1 001 * * * 1002).Я ищу механизм, который выполняет большую часть рендеринга сцены в буфер, а затем дает мне доступ к этому буферу, буферу az и параметрам камеры, так что я могу изменить их, прежде чем вывести их на дисплей.Мне интересно, возможно ли это с Direct3D, OpenGL или, возможно, использовать высокоуровневую инфраструктуру, такую как OpenSceneGraph, и что будет лучшей отправной точкой?Учитывая, что программное обеспечение основано на Windows, я, вероятно, предпочел бы использовать Direct3D, поскольку это может привести к наименьшему количеству проблем с драйверами, которых я очень хочу избежать.OpenSceneGraph, кажется, предоставляет пользовательский отбор через октреи, которые близки, но не идентичны тому, что я использую.
Редактировать: Чтобы уточнить немного, в настоящее время у меня есть следующее:
Список отображения / сцена в памяти, которая обычно будет содержать до нескольких миллионов треугольников, линий и фрагментов текста, , которые я отбрасываю в программном обеспечении и выводю на растровое изображение с использованием низкоговыполнение примитивов рисования
Облако точек в памяти, которое может содержать миллиарды точек в сильно сжатом формате (~ 4,5 байта на 3-ю точку), которое я отбрасываю и выводлю в тот жерастровое изображение
Информация о курсоре, которая добавляется в растровое изображение перед выводом
Камера, z-буфер и буфер атрибутов для целей навигации и выбора
Медленный бит - это выделенная часть раздела 1, которую я хотел бы заменить на визуализацию какого-либо графического процессора.Решение, которое я планирую, состоит в том, чтобы создать сцену для графического процессора, отобразить ее в растровое изображение (с соответствующим z-буфером) на основе текущих параметров моей камеры, а затем добавить облако точек перед выводом.
В качестве альтернативы, я мог бы перейти к каркасу на основе сцены, который управлял камерами и навигацией для меня и предоставлял точки зрения в виде сфер или сплитов в зависимости от объема и уровня детализации во время цикла рендеринга.,В этом сценарии мне также понадобится добавить информацию о курсоре в представление.
В любом сценарии хост-приложением будет MFC C ++ на основе VS2017, что потребовало бы слишком много работы для изменения в целяхэто упражнение.