我必须评估Pyopengl和Pyglet的性能/功能。主要的问题是,当使用高FPS时,它不能丢弃任何帧。在我开始学习其中一个之前,我需要看看它是否能满足客户的需求。
我正在尝试在红色和绿色(全屏模式)之间切换(在vsync模式下)。如果有人能给我一个很好的教程网站,或者帮我举个例子,那就太好了。
我看过这篇文章(还有更多):FPS with Pyglet half of monitor refresh rate
进行了修改,但在Vsync上看不到如何从一种颜色切换到另一种颜色。
import pyglet
from pyglet.gl import *
fps = pyglet.clock.ClockDisplay()
# The game window
class Window(pyglet.window.Window):
def __init__(self):
super(Window, self).__init__(fullscreen=True, vsync = False)
self.flipScreen = 0
glClearColor(1.0, 1.0, 1.0, 1.0)
# Run "self.update" 128 frames a second and set FPS limit to 128.
pyglet.clock.schedule_interval(self.update, 1.0/128.0)
pyglet.clock.set_fps_limit(128)
def update(self, dt):
self.flipScreen = not self.flipScreen
pass
def on_draw(self):
pyglet.clock.tick() # Make sure you tick the clock!
if self.flipScreen == 0:
glClearColor(0, 1, 0, 1.0)
else:
glClearColor(1, 0, 0, 1.0)
self.clear()
fps.draw()
# Create a window and run
win = Window()
pyglet.app.run()
我看过很多教程,但我不能理解如何运行这一个测试。
谢谢你的帮助。
发布于 2013-07-05 01:19:13
下面是使用pyglet完成此任务的代码。它已经在3个监视器上以60 Hz和120 Hz进行了测试。请注意,全局变量的使用是错误的。它可能不是很干净,但它清楚地表明,将vsync引入account.This是测试vsync功能的代码的目的。
import pyglet
from pyglet.gl import *
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
# Direct OpenGL commands to this window.
config = Config(double_buffer = True)
window = pyglet.window.Window(config = config)
window.set_vsync(True)
window.set_fullscreen(True)
colorSwap = 0
fullscreen = 1
fps_display = pyglet.clock.ClockDisplay()
def on_draw(dt):
global colorSwap
glClear(GL_COLOR_BUFFER_BIT) # Clear the color buffer
glLoadIdentity() # Reset model-view matrix
glBegin(GL_QUADS)
if colorSwap == 1:
glColor3f(1.0, 0.0, 0.0)
colorSwap = 0
else:
glColor3f(0.0, 1.0, 0.0)
colorSwap = 1
glVertex2f(window.width, 0)
glVertex2f(window.width, window.height)
glVertex2f(0.0, window.height)
glVertex2f(0.0, 0.0)
glEnd()
fps_display.draw()
@window.event
def on_key_press(symbol, modifiers):
global fullscreen
if symbol == pyglet.window.key.F:
if fullscreen == 1:
window.set_fullscreen(False)
fullscreen = 0
else:
window.set_fullscreen(True)
fullscreen = 1
elif symbol == pyglet.window.key.ESCAPE:
print ''
dt = pyglet.clock.tick()
pyglet.clock.schedule_interval(on_draw, 0.0001)
pyglet.app.run()
https://stackoverflow.com/questions/17235418
复制相似问题