Первый пост здесь:
- Глубокое дыхание -
Чтобы «окантовать» приложение, которое довольно хорошо работает в полноэкранном режиме в OpenGL (которое, по сути, берет данные с веб-камеры, немного гадит перед ее отображением), я решил взять кусочек текстуры и попытайтесь заставить это нарисовать на форме Windows.
Я полон решимости заменить кусок неуправляемой памяти malloc на управляемый массив, а затем использовать его для создания BitmapSource, с помощью которого можно создать изображение, которое я затем смогу DrawImage () для формы.
По сути, вот где я нахожусь:
cli::array<char>^ MyArray = gcnew cli::array<char>(10000);
BitmapSource^ bmpSource = BitmapSource::Create(
(int)g_nTexMapX,
(int)g_nTexMapY,
(int)300,
(int)300,
(System::Windows::Media::PixelFormat)PixelFormats::Rgb24,
(int)0,
MyArray,
(unsigned int)(g_nTexMapX*3 +(g_nTexMapX*3) %4));
и меня приветствует ошибка C2665 - очевидно, я жалуюсь, что мои параметры не соответствуют ни одной из ожидаемых перегрузок и что виноват MyArray.
Скорее всего, это случай, когда здесь не видят дрова для деревьев, но я был бы рад принять неизбежное указание и смех, если бы сопровождался исправлением, которое позволит мне продолжить свою жизнь, как планировалось.
Большое спасибо заранее.
Следующий ответ:
Я решил, что просто найдет перегрузку, которая создается из неуправляемых данных, которые я бы использовал, но решение работает в любом случае:
IntPtr myPixels = (IntPtr)g_pTexMap; // <- Pointer to my pixel data.
BitmapSource^ bmpSource = BitmapSource::Create(
(int)g_nTexMapX,
(int)g_nTexMapY,
300.0,
300.0,
PixelFormats::Rgb24,
nullptr,
myPixels,
(int)(g_nTexMapX * g_nTexMapY * 3),
(int)(g_nTexMapX*3 +(g_nTexMapX*3) %4));
Также я должен сказать спасибо, что предложил мне 'nullptr', который после попытки 0, нуля, NULL и т. Д. Начал сводить меня с ума!