Opengl Pyglet:使用Vsync时fps不稳定。。。没有其他软件

Opengl Pyglet:使用Vsync时fps不稳定。。。没有其他软件,opengl,pyglet,Opengl,Pyglet,我正在使用Pyopengl和Pyglet作为一个简单的应用程序。我正在使用Vsync以120 Hz的频率交换缓冲区。问题就在这里。当我运行许多应用程序时,比如Outlook、Chrome、NotePad++,Dora在后台的伟大冒险,Fps在120Hz时足够稳定。但是,当我关闭所有这些应用程序时,fps从114Hz变为125Hz 我认为关闭应用程序实际上会提高fps,但不是。我的应用程序不同步。我还认为Pyglet给出的fps会保持在119和121之间 有人能帮我弄清楚吗?我没有看到一些明显的东

我正在使用Pyopengl和Pyglet作为一个简单的应用程序。我正在使用Vsync以120 Hz的频率交换缓冲区。问题就在这里。当我运行许多应用程序时,比如Outlook、Chrome、NotePad++,Dora在后台的伟大冒险,Fps在120Hz时足够稳定。但是,当我关闭所有这些应用程序时,fps从114Hz变为125Hz

我认为关闭应用程序实际上会提高fps,但不是。我的应用程序不同步。我还认为Pyglet给出的fps会保持在119和121之间

有人能帮我弄清楚吗?我没有看到一些明显的东西吗

这里有一些代码

def on_draw(dt):
    cnt
    ScreenSwap
    left = True
    right = False
    Rval = 0.0/255.0
    Gval = 153.0/255.0
    Bval = 0.0/255.0

    ShapePosition(speed = 0.25)

    glClear(GL_COLOR_BUFFER_BIT)  # Clear the color buffer
    glLoadIdentity()              # Reset model-view matrix
    DrawChecker(Nbr = 16, Dark = 25.0/255, Light = 75.0/255)

    if ScreenSwap == 1:
        DrawQuestionMark(Rval, Gval, Bval, left)
        # Blue Line
        BlueLine(left)        
        # Line to see if we are dropping frame
        DropFrameTest(left)
        ScreenSwap = 0

    else:     
        DrawQuestionMark(Rval, Gval, Bval, right)    
        # Blue Line
        BlueLine(right)
        # Line to see if we are dropping frame
        DropFrameTest(right)
        ScreenSwap = 1


    fps = pyglet.clock.get_fps()
    fd.write( str(fps) + "\n")   # debug
还有更多:

display = pyglet.window.get_platform().get_default_display()
screens = display.get_screens()

# Direct OpenGL commands to this window.
config = Config(double_buffer = True)
window = pyglet.window.Window(config = config, screen=screens[1],  vsync=True)
# Set full screen in separate function to avoid flicker a the start
window.set_fullscreen(True)
pyglet.clock.ClockDisplay()
#pyglet.clock.set_fps_limit(120)
fps = pyglet.clock.get_fps()
dt = pyglet.clock.tick()    
pyglet.clock.schedule_interval(on_draw, 0.001)
pyglet.app.run()
fd.close()

好的,我想我明白发生了什么

为了理解这种行为,我每次画框时都会将时间和帧速率写入一个文件。我还使用了“GPU任务管理器”来获取特定时间的GPU负载信息()

当我有很多应用程序在后台运行时,我的应用程序运行良好,GPU负载约为25%

当我没有很多应用程序在后台运行时,我的应用程序总是不同步,CPU负载更高,GPU负载也不稳定

我对我的代码的两种不同实现进行了观察,每次监视GPU+CPU活动15分钟

起初,我假设CPU承担了所有的负载。。。但似乎我错了