OpenGL графика в любом открытом окне.
имея идентификатор окна можно получить и контекст окна.
Допустим есть какое-то открытое окно, нет проблемы получить его идентификатор,
пусть он будет hWnd. Следствено можно получить и контекст hDC = GetDC(hWnd);
Имея контекст окна можно без проблем нарисовать в нём что-нибудь графическими
средствами винды, например так:
CPen pen(PS_SOLID, 4, RGB (255, 0, 0));
SelectObject(hDC, pen);
Но совсем другое дело когда надо получить изображения не средствами виндюшной
графики, а например OpenGL'а. Это связано с тем, что здесь не достаточно иметь только
hDC, но также необходимо иметь пиксельный формат совместимый с OpenGL.
Сначало, я думал что проблем с этим не будет, но как оказалось напрасно, вобщем
для использования OpenGL графки в окнах уже запущенных приложениях
(когда я пишу приложения я имею в виду обычные виндюшные окна в которых там папки да
файлы всякие, а не какие-нибудь игрушки естественно) я делал так:
static PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
16,
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
}; //заполнял pfd структуру.
hDC = GetDC(hWnd); //получал контекст.
PixelFormat = ChoosePixelFormat(hDC, &pfd); //Выбор наиболее подходящего формата.
SetPixelFormat(hDC, PixelFormat, &pfd); //Устанавливал этот формат.
hRC = wglCreateContext(hDC); //Захват контекста рендеринга.
Ну а после этого я попытался рисовать в окнах, используя средства OpenGL'а
результат вообще никакой. Компилятор никаких ошибок не нашёл, я запустил
программу, но никакого результата не увидел.
Вопрос в том, что не так я сделал, и как надо?