рисовать open gl в существующее окно?

Elene4

в с++ создается окно
как в open gl'ем рисовать в это окно?

Slavaga

Не совсем понятен вопрос, но можно начать с, например, вот этого.

nattana

ты не написал под какую оконную систему ты пишешь
в каждой из них: X Windows, Mac, OS/2, Win по-своему
в винде это будут функции wgl:

hRC = wglCreateContext(hDC);//HGLRC hRC;
wglMakeCurrent(hDC,hRC);

создать и привязать контекст
wglMakeCurrent(NULL,NULL);
wglDeleteContext(hRC);

удалить контекст
но естественно нужен правильный PIXELFORMAT на контексте, ну и SwapBuffers делать, если с двойной буферизацией.
MSDN: Здесь по шагам разбирается пример по винду.
по OpenGL есть такая книжка redbook называется, очень полезная

Elene4

таким образом, я создам окно с помощью visual с++ (допустим) и передам его полностью OpenGL?
Я правильно понял?
Я хочу чтобы в интерфейсе была кнопка, чтобы я на нее нажал, и в этом же окне, OpenGL что-нибудь нарисовал.
Так можно сделать?

nattana

хм... не всё, а только клиентскую область
идейно делается так (что можно прочитать по ссылке на MSDN, приведенной выше):
1. при создании окна, DC окна задаётся PIXELFORMAT (ChoosePixelFormat, SetPixelFormat и создаётся gldc (wglCreateContext)
2. при каждом рисовании делаем wglMakeCurrent, далее рисуем то, что нам надо и убираем wglMakeCurrent (0, 0)
и если двойная буферизация делаем SwapBuffers
3. при изменении размеров окна указываем GL изменения
4. при выходе убиваем wglDeleteContext
Оставить комментарий
Имя или ник:
Комментарий: