代码之家  ›  专栏  ›  技术社区  ›  Nick Van Brunt

如何调整用wglcreatecontext创建的opengl窗口的大小?

  •  0
  • Nick Van Brunt  · 技术社区  · 15 年前

    是否可以在不禁用wglcreatecontext的情况下调整用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);
    
    }
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Ben Voigt    15 年前

    我想你得打电话 glViewport 重新调整工作区大小后。

        2
  •  0
  •   MSN    15 年前

    我很确定您不必删除呈现上下文或dc。但是,您应该在调整窗口大小之前停用它。

    此外,在渲染时,可能只应激活渲染上下文。

    推荐文章