Я работаю над реализацией своего собственного алгоритма 3D-рендеринга, который в конечном итоге выведет 2D-набор «пикселей», где каждый пиксель является значением RGB. Это может выглядеть примерно так:
int pixels[][]
Какой элемент управления XAML я бы использовал для отображения этих данных A) в виде статического изображения и B) в режиме реального времени?
Моя первоначальная идея в отношении статического изображения состояла в том, чтобы вывести мои данные в виде растрового изображения, а затем с помощью элемента управления Image
установить источник для этого растрового изображения. Так что это может выглядеть примерно так:
int pixels[][] = renderer.Render(sceneData);
Bitmap image = new Bitmap(pixels);
MyImageControl.Source = image;
Это жизнеспособно? Какой правильный класс для «растрового изображения»? Мне трудно найти один. Я хочу иметь возможность индивидуально манипулировать значениями пикселей.
По второму вопросу, в режиме реального времени, просто помещается тот же код, что и выше, но в цикл, выполняемый (в идеале) от 30 до 60 или более раз в секунду, и результат будет больше похож на видео, чем на один неподвижное изображение. Судя по моему прошлому опыту UWP и C #, повторная установка свойства Source
элемента управления Image
будет слишком медленной для этого.
Я могу использовать существующие API для таких вещей, как обработка данных изображения, отображение их или преобразование их форматов, но цель этого упражнения для меня - написать собственный рендерер ... поэтому мне нужно перевести входные данные в окончательный набор "пикселей" сам. Я не могу использовать DirectX или другие существующие средства визуализации для этого.