Можно ли изменить размер окна openGL (или контекста устройства), созданного с помощью wglCreateContext, без его отключения? Если так, то как? Прямо сейчас у меня есть функция, которая изменяет размер DC, но единственный способ заставить его работать - это вызвать DisableOpenGL, а затем снова включить. Это приводит к потере любых текстур и других изменений состояния. Я хотел бы сделать это без отключения, чтобы мне не пришлось выполнять утомительную задачу воссоздания состояния openGL DC.
HWND hWnd;
HDC hDC;
void View_setSizeWin32(int width, int height) {
// resize the window
LPRECT rec = malloc(sizeof(RECT));
GetWindowRect(hWnd, rec);
SetWindowPos(
hWnd,
HWND_TOP,
rec->left,
rec->top,
rec->left+width,
rec->left+height,
SWP_NOMOVE
);
free(rec);
// sad panda
/*
DisableOpenGL( hWnd, hDC, hRC );
EnableOpenGL( hWnd, &hDC, &hRC );
*/
//EDIT - instead do this....
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-(width/2), width/2, -(height/2), height/2, -1.0, 1.0);
}