Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 5 of 5

Thread: Why VSync can not be opened under Windows7?

  1. #1
    Newbie Newbie
    Join Date
    Aug 2013
    Posts
    3

    Why VSync can not be opened under Windows7?

    Below is my code to create a OpenGL Render RC:

    m_hDC=::GetDC(m_hWnd);
    PIXELFORMATDESCRIPTOR pfd = {
    sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
    1, // version number

    PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER,
    PFD_TYPE_RGBA, // RGBA type
    32, // 32-bit color depth
    0, 0, 0, 0, 0, 0, // color bits ignored
    0, // no alpha buffer
    0, // shift bit ignored
    0, // no accumulation buffer
    0, 0, 0, 0, // accum bits ignored
    0, // 32-bit z-buffer
    0, // no stencil buffer
    0, // no auxiliary buffer
    PFD_MAIN_PLANE, // main layer
    0, // reserved
    0, 0, 0 // layer masks ignored
    };
    BOOL bRet=FALSE;
    int index=ChoosePixelFormat(m_hDC,&pfd);
    if(index)
    {
    if(SetPixelFormat(m_hDC,index,&pfd))
    {
    m_hRC=wglCreateContext(m_hDC);
    if(m_hRC)
    bRet=wglMakeCurrent(m_hDC,m_hRC);
    }
    }
    if(bRet)
    Reshape();
    else
    assert(FALSE);
    glPixelStorei(GL_UNPACK_ALIGNMENT,1);
    glEnable(GL_TEXTURE_2D);
    wglSwapIntervalEXT(1);// turn on VSync
    assert(wglGetSwapIntervalEXT() == 1); // Check VSync is opened or not
    return bRet;


    In WindowsXP,the code can turn on the "VSync" function and the rendered image looks smooth in OpenGL window,but in Windows7,the OpenGL API tell me I had turn on the function(the "wglGetSwapIntervalEXT()" return 1),but the rendered image in OpenGL Window is chapped,just like VSync is off,why the code can not turn on VSync under Windows7?

    My test computer use NV Geforce GTX 670 display card,with V320.49 driver.

  2. #2
    Senior Member OpenGL Guru Dark Photon's Avatar
    Join Date
    Oct 2004
    Location
    Druidia
    Posts
    3,124
    Quote Originally Posted by pango99 View Post
    In WindowsXP,the code can turn on the "VSync" function and the rendered image looks smooth in OpenGL window,but in Windows7, the OpenGL API tell me I had turn on the function(the "wglGetSwapIntervalEXT()" return 1),but the rendered image in OpenGL Window is chapped,just like VSync is off,why the code can not turn on VSync under Windows7?
    Yeah, that's frustrating. Hopefully someone that does more Windows OpenGL dev will follow-up, but I believe the issue is that MS Windows versions since Vista (which include Windows 7 but not XP) have a compositing window manager (originally called Aero, now often just referred to as DWM) which whether you like it or not takes ownership of VSYNC.

    Ways often mentioned for potentially getting around this problem are 1) disable Aero/DWM (which gets rid of the annoying software that's stealing control of VSYNC), or 2) make your application full-screen (which may cause Aero/DWM to loan control of VSYNC to your application). Random websearch hits: Vista auto-fullscreen-detection disabling aero? and disable vsync with Windows 7 ?. For more, you now know the terms to search for: opengl vsync windows dwm vista

  3. #3
    Newbie Newbie
    Join Date
    Aug 2013
    Posts
    3
    I had close the DWM(just close the "Desktop Window Manager Session Manager" serive from ControlPanal),but the problem still exist;my OpenGL render window is a MFC dialog with no border, and popup style added,and I reposition the dialog to cover fullscreen,is the dialog window cause my problem?I plan to write a new Window class to check it tomorrow.

  4. #4
    Senior Member OpenGL Pro
    Join Date
    Jan 2007
    Posts
    1,136
    Have you checked your NVIDIA control panel that you're not forcing vsync off there? I've definitely got no problem with wglSwapInterval stuff under NVIDIA graphics and Windows 7.

  5. #5
    Newbie Newbie
    Join Date
    Aug 2013
    Posts
    3
    Quote Originally Posted by mhagain View Post
    Have you checked your NVIDIA control panel that you're not forcing vsync off there? I've definitely got no problem with wglSwapInterval stuff under NVIDIA graphics and Windows 7.
    I set vsync is controlled by application in NVIDIA control panal

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •