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