Ruckeln bei einfachen Programmen

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Ich habe einen recht einfachen Skript aber trotzdem ruckelt es sehr stark. Dabei ist mir aufgefallen, dass ohne Fullscreen alles flüssig läuft, sobald ich aber Fullscreen anschalte fängt die Maus an zu ruckeln.
Hier der Skript.

Code: Alles auswählen

import pygame as py
import time as ti
def main():
	EVE = "1b"
	ESC = "GO"
	py.init()
	screen = py.display.set_mode((1920, 1080),py.FULLSCREEN,32) 
	py.display.set_caption("ABC")
	py.mouse.set_visible(1)
	py.key.set_repeat(1, 30)
	while ESC == "GO":
		clock = py.time.Clock().tick(30)
		screen.fill((0, 0, 0))
		py.display.flip()
		events = py.event.get()
		if events != []:
			if str(events[0])[58:60] == EVE:
				print("ESC")
				ESC = "END"
if __name__ == '__main__':
	main()
BlackJack

Und die Frage ist nun? Es läuft halt bei Deiner Hard- und Softwarekombination im Vollbild nicht flüssig. Da müssen, wenn's hochkommt 237 MiB/s Daten zur Grafikkarte gepumpt werden.

Anmerkung zum Quelltext: Die Abkürzungen, das neubinden von "Konstanten", und die Art wie die Ereignisse abgearbeitet werden, sind -- äh -- gewöhnungsbedürftig.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Danke ist für mich Antwort genug.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Ich meine gehört zu haben, dass man über DirectX eine bessere Performance kriegen müsste. Des weiteren habe ich bei einer Suche im Internet gesehen, dass Python mit DirectX zusammenarbeiten kann. Erstmal stimmt das oder bin ich auf einem falschen Weg? Könnte mir vielleicht jemand einen Link geben auf dem die (wichtigsten) Befehle aufgelistet sind. Wäre sehr dankbar.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

BlackJack hat geschrieben:Anmerkung zum Quelltext: Die Abkürzungen, das neubinden von "Konstanten", und die Art wie die Ereignisse abgearbeitet werden, sind -- äh -- gewöhnungsbedürftig.
Da kommt mir aus einer Vorlesung doch glatt die "variable Lernkonstante" wieder in den Sinn ^^

@min: Ohne dir zu nahe treten zu wollen, aber von dem (wenigen) was ich bisher von dir gesehen habe, würde ich die Finger von DirectX lassen. Das ist noch eine Nummer zu groß. An deiner Stelle würde ich mich erstmal vernünftig in Python und PyGame einarbeiten.

Sebastian
Das Leben ist wie ein Tennisball.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Stimmt das Script ist überhaupt nicht gelungen. Nicht nur das sondern eigentlich alle bisher, da sie meistens nur Schnipsel sind. Auf der anderen Seite würde ich mir gerne einer neuen Herausforderung stellen (Learning by Doing).
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Dann schau dir doch die Seite und die DirectX Dokumentation einfach mal an. Die Funktionalität ist aber wirklich sehr low-level und nicht annähernd so komfortabel wie pygame.

Sebastian
Das Leben ist wie ein Tennisball.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Ich verstehe es, dass du so überzeugt bist von Pygame. Aber mit den Performanceproblemen mit denen ich kämpfen muss weicht die Euphorie. Aber an der Grafikkarte oder anderer Hardware kann das eher nicht liegen. Bin über jede Hilfe froh. Es muss nicht DirectX sein.
BlackJack

@min: Musst Du denn wirklich diesen ganzen grossen Bildschirm ständig neuzeichnen? Reicht nicht auch eine kleinere Auflösung? Insbesondere beim Vollbild. Wie sieht's denn aus, wenn Du Hardwarebeschleunigung anforderst? Schau Dir mal die Doku zu `display.set_mode()` an, was man da für Flags übergeben kann.

Ansonsten gäb's noch `pyglet`: http://pyglet.org/

Und man könnte sich natürlich auch mit OpenGL selbst was zusammenbasteln. Das wäre dann aber auch von der Abstraktion eher auf der Stufe von DirectX.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Danke für den Tipp. Ich werde ihm vorerst nachgehen. Doch erlaube mir noch eine Frage: wegen den Flags: gibt es eine andere Seite neben der offiziellen Pygame und zu OpenGL, ich wäre sehr dankbar über einen Link zu einem Tutorial für Anfänger.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Zumindest bei DirectPython und PyOpenGL kannst du dich an die DirectX und OpenGL Dokumentationen halten. Entsprechend kannst du auch die ganze Menge der umherschwirrenden Tutorials verwenden. Wohl meist in C oder C++. Das sind beides wirklich nur Wrapper, mit eben mal an einem Abend einarbeiten wird das sicher nichts. Und auf der Pygame Seite sind doch nun wirklich genug Tutorials und Dokumentation.
Das Leben ist wie ein Tennisball.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Gut werde ich mich dann mit dem Englisch durchquälen müssen. Aber noch mal vielen Dank für die Hilfe.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Leider noch eine Frage: Wo könnte man ablesen welche Bildschirmauflösung Pygame bzw. der Monitor annimmt? Es geht mir dabei darum, dass keine scwarzen Streifen Links, Rechts, Oben und Unten entstehen.
Antworten