是否可以调整使用wglCreateContext创建的openGL窗口(或设备上下文)而不禁用它?如果是这样的话?现在我有一个调整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);
}
答案 0 :(得分:2)
我认为在客户区调整大小后,您必须再次致电glViewport。
答案 1 :(得分:0)
我很确定你不必删除渲染上下文或DC。但是,您应该在调整窗口大小之前停用它。
此外,在渲染时,您可能只应该激活渲染上下文。