Hallo,
ich bastel mir gerade eine 2D Spieleengine mit der LWJGL. Ich denke, ich habe schon viel optimiert, aber vielleicht fällt euch noch was ein.
Was ich bereits habe:
- ich benutze den SpriteBatch und den Shader von:
https://github.com/mattdesl/lwjgl-basics
- Alle GameObjects sind in einer HashMap, die als Key den layer hat, wo das GameObject gerendert werden soll
- GameObjects werden nur gerendert, wenn sie in Sichtweite meiner Camera sind
- keine unnötigen Objektinstanzierungen in der Gameloop
- keine unnötigen neuen Zuordnungen von Variablen (zB Float x; mir fällt der richtige Name gerade nicht ein, oder ist er das?) in der Gameloop -> 99% als Felder
Geplant:
- Textureatlas benutzen/besseren Support einbauen
Beim testen dieses Setups schaffe ich (i7-4790, GTX 770) 1.000.000 Sprites die die gleiche Textur benutzen mit 15-18 FPS.
Ich denke zwar, dass das schon ein netter Wert ist, aber ganz sicher bin ich mir da nicht. Und neulich habe ich ein Video gesehen (
, ob es genau das Video ist weiß ich nicht mehr aber es ist das Spiel), wo diejenige Person eine ca 6000*2000 Welt hat, und es scheint als es würde flüssig laufen. Wie kann ich das erreichen? Kann ich vlt Multithreading verwenden? Rendering geht ja leider nur im Hauptthread
Danke für eine Antwort.
EDIT: GL_DEPTH_TEST ist deaktiviert und GL_CULL_FACE ist aktiviert (GL_FRONT)
PS.: Ist vom Handy geschrieben, entschuldigt etwaige Fehler...
ich bastel mir gerade eine 2D Spieleengine mit der LWJGL. Ich denke, ich habe schon viel optimiert, aber vielleicht fällt euch noch was ein.
Was ich bereits habe:
- ich benutze den SpriteBatch und den Shader von:
https://github.com/mattdesl/lwjgl-basics
- Alle GameObjects sind in einer HashMap, die als Key den layer hat, wo das GameObject gerendert werden soll
- GameObjects werden nur gerendert, wenn sie in Sichtweite meiner Camera sind
- keine unnötigen Objektinstanzierungen in der Gameloop
- keine unnötigen neuen Zuordnungen von Variablen (zB Float x; mir fällt der richtige Name gerade nicht ein, oder ist er das?) in der Gameloop -> 99% als Felder
Geplant:
- Textureatlas benutzen/besseren Support einbauen
Beim testen dieses Setups schaffe ich (i7-4790, GTX 770) 1.000.000 Sprites die die gleiche Textur benutzen mit 15-18 FPS.
Ich denke zwar, dass das schon ein netter Wert ist, aber ganz sicher bin ich mir da nicht. Und neulich habe ich ein Video gesehen (
Danke für eine Antwort.
EDIT: GL_DEPTH_TEST ist deaktiviert und GL_CULL_FACE ist aktiviert (GL_FRONT)
PS.: Ist vom Handy geschrieben, entschuldigt etwaige Fehler...