我正在使用Pyopengl和Pyglet进行简单的应用程序。我正在使用Vsync交换120 Hz的缓冲区。这是问题所在。当我运行许多应用程序,如Outlook,Chrome,NotePad ++,Dora在背景上的伟大冒险,Fps足够稳定在120Hz。但是,当我关闭所有这些应用程序时,fps从114Hz变为125Hz!?!?
我认为关闭应用程序实际上会提高fps,但不会。我的申请不同步。我还认为Pyglet给出的fps会介于119和10之间。 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()
答案 0 :(得分:0)
好的,我想我明白了发生了什么。
为了理解这种行为,我每次画画时都会写一个文件的时间和帧率。我还使用“GPU任务管理器”来获取特定时间(GPU-Z)的GPU负载信息。
当我在后台运行大量应用程序时,我的应用程序运行良好,GPU负载大约为25%。
当我没有很多应用程序在后台运行时,我的应用程序经常不同步,CPU负载更高,GPU负载不稳定。
我对我的代码的两种不同实现进行了观察,并且每次监控GPU + CPU活动15分钟。
起初,我认为CPU占用了所有负载......但似乎我错了。