Я бы хотел использовать OpenGL для рисования непосредственно в .NET System :: Drawing :: Bitmap (C ++ / CLI). Кажется, это должно работать так:
char buf[48];
ZeroMemory( &buf, sizeof(buf));
System::Drawing::Bitmap bmp(
4,
4,
12,
Imaging::PixelFormat::Format24bppRgb,
(System::IntPtr)buf);
Graphics^ g = Graphics::FromImage(%bmp);
HDC local_hdc = (HDC)((void*)g->GetHdc());
HGLRC local_hrc = wglCreateContext( local_hdc );
if(!wglMakeCurrent( local_hdc, local_hrc ))
ShowError();
//Draw something with OpenGL ...
g->ReleaseHdc((IntPtr)((void*)local_hdc));
//Do something with the bitmap ...
Но wglMakeCurrent завершается с ошибкой «Недопустимый формат пикселей».
"Конечно!" Я думаю. «Мне просто нужно установить формат пикселя растрового изображения таким образом, чтобы OpenGL мог отображать его!»
К сожалению, если я использую вышеупомянутый конструктор Bitmap, я ограничусь перечислением стандартных пиксельных форматов, а не структурой, содержащей кучу атрибутов, которые я могу ИЛИ вместе. И я не думаю, что возможно установить формат пикселя после факта.
В любом случае, такой способ работы был бы более красивым, чем использование набора вызовов Win32 для создания независимого от устройства растрового изображения, но в стандартных форматах пикселей, по-видимому, отсутствует какой-либо вид поддержки GL, и я просто терплю неудачу. Можете ли вы добиться успеха?