Pyglet läuft nicht richtig auf AMD HD4250

Ich baue ein Python-Programm mit Pyglet. Der Quellcode läuft ganz gut auf jedem Computer exept für meinen Laptop. Mein Laptop ist auch der einzige mit einer AMD Grafikkarte: der HD4250. Seine Xubuntu 13.04 AMD64, und die Grafik-Treiber sind die X11 Open Source diejenigen. So sieht es aus: Bildbeschreibung hier eingeben

Beim Hinzufügen einer klaren Aussage in den Konstruktor wird der Bildschirm ordnungsgemäß erstellt, aber dann ist es unglaublich langsam. Es wird bei max 2 mal pro 30 Sekunden auffrischen und kaum auf jede Eingabe reagieren. Wie kann ich das beheben?

Es scheint nicht, dass OpenGL das Problem ist: Bei der Verwendung von Qt OpenGL (C ++ auch) gibt es überhaupt keine Probleme.

Einige (hoffentlich relevante) Code:

def draw(self): pyglet.text.Label('Start Screen', font_name='Arial', font_size=16, x=self.window.get_size()[0]/2, y=self.window.get_size()[1]-20, anchor_x='center', anchor_y='center').draw() pyglet.text.Label('This side is looking at the enemy', font_name='Arial', font_size=16, x=self.window.get_size()[0]/2, y=self.window.get_size()[1]-60, anchor_x='center', anchor_y='center').draw() pyglet.text.Label(self.bottumText, font_name='Arial', font_size=16, x=self.window.get_size()[0]/2, y=20, anchor_x='center', anchor_y='center').draw() for y in range(0, len(self.fields)): for field in self.fields[y]: if (field.selected): glColor3f(self.color[0], self.color[1], self.color[2]) # glColor3f(1, 0, 1) else: glColor3f(1, 1, 1) # Draw center # self.drawCircle(field.x, field.y, 5, [1, 1, 1]) # # Draw top side pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (field.x + field.size, field.y + field.size, field.x - field.size, field.y + field.size))) # Draw down side pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (field.x + field.size, field.y - field.size, field.x - field.size, field.y - field.size))) # Draw left side pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (field.x - field.size, field.y - field.size, field.x - field.size, field.y + field.size))) # Draw right side pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (field.x + field.size, field.y - field.size, field.x + field.size, field.y + field.size))) 

One Solution collect form web for “Pyglet läuft nicht richtig auf AMD HD4250”

Was ergibt der folgende Code:
(Es ist nicht auf einen bestimmten Frame-Puffer an sich beschränkt, so dass es eine bessere Ausgabe erzeugen könnte)

 #!/usr/bin/python import pyglet from time import time, sleep class Window(pyglet.window.Window): def __init__(self, refreshrate): super(Window, self).__init__(vsync = False) self.frames = 0 self.framerate = pyglet.text.Label(text='Unknown', font_name='Verdana', font_size=8, x=10, y=10, color=(255,255,255,255)) self.last = time() self.alive = 1 self.refreshrate = refreshrate self.click = None self.drag = False def on_draw(self): self.render() def on_mouse_press(self, x, y, button, modifiers): self.click = x,y def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): if self.click: self.drag = True print 'Drag offset:',(dx,dy) def on_mouse_release(self, x, y, button, modifiers): if not self.drag and self.click: print 'You clicked here', self.click, 'Relese point:',(x,y) else: print 'You draged from', self.click, 'to:',(x,y) self.click = None self.drag = False def render(self): self.clear() if time() - self.last >= 1: self.framerate.text = str(self.frames) self.frames = 0 self.last = time() else: self.frames += 1 self.framerate.draw() self.flip() def on_close(self): self.alive = 0 def run(self): while self.alive: self.render() # ----> Note: <---- # Without self.dispatc_events() the screen will freeze # due to the fact that i don't call pyglet.app.run(), # because i like to have the control when and what locks # the application, since pyglet.app.run() is a locking call. event = self.dispatch_events() sleep(1.0/self.refreshrate) win = Window(23) # set the fps win.run() 

Sie könnten versuchen, bestimmte Zeichnungsmethoden zu erzwingen, die mit dem offenen Treiber arbeiten könnten, den Sie verwenden, Sachen wie:

 glEnable(GL_TEXTURE_2D) 

und

 glClear(GL_COLOR_BUFFER_BIT) glLoadIdentity() glBegin(GL_TRIANGLES) glVertex2f(0, 0) glVertex2f(window.width, 0) glVertex2f(window.width, window.height) glEnd() 
  • Putpixel mit pyglet
  • Ist es möglich, pygame oder pyglet in einem Browser laufen zu lassen?
  • Drehen Sie 3D-Bildchargen, um sie zu machen 2D
  • Pyglet: Sprite.draw () und Batch.draw () funktionieren nicht, aber Image.blit tut
  • Python pyglet AVBin - Wie installiere ich AVBin
  • Pyglet in Mac installieren
  • Kann nicht ausziehen () sprites in pyglet
  • Wie man Musik ständig in pyglet spielt
  • Wie programmiere ich eine doppelte Taste, um eine Nicht-Modifizierer-Taste zu verhalten, wie eine Modifikations-Taste in meinem Programm?
  • Python pyglet und opengl
  • Grundlegende openGL, Scheitelpuffer und pyglet
  • Python ist die beste Programmiersprache der Welt.