Anzeige:
Ergebnis 1 bis 13 von 13

Thema: SDL - wenig Frames

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32

    SDL - wenig Frames

    Hi, ich programmiere ein Spiel mit SDL - tilebasierend.
    ( http://www.lanadminsystem.de/cgi-bin/Lanas.pl?OPENANNO )

    Dabei habe ich das Problem, dass ich einfach nicht genug Frames bekomme.
    Zur Zeit ist es so, dass ich jedes einzelne Tile auch einzeln Blitte (denn ich will die schließlich später auch noch animieren) - das scheint aber ewig zu dauern. Hat jemand ne Idee wie ich blitts reduzieren kann?

  2. #2
    Registrierter Benutzer
    Registriert seit
    26.02.2005
    Beiträge
    18
    Ich hab gute Erfahrungen damit gemacht nicht die Buffer zu swapen sondern nur das was neugezeichnet wird mit SDL_UpdateRect(screen,x1,y1,x2,y2); upzudaten um mehr performance rauszuschinden.

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    also bei jedem blit ein update des rect?

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    wenn ich das so mache, flackert der bildschirm ständig....

  5. #5
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ich kenne mich jetzt null mit SDL aus; verwendest Du einen DoubleBuffer? Dann sollte das Flackern verschwinden.
    I haven't lost my mind - It's somewhere on a backup-disc

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    ja, den verwende ich - daran kanns nicht liegen - wenn ich nach allen blits die ich im laufe eines frames so machen den kompletten screen mit sdl_flip update, dann flackert es ja auch nicht - nur wenn ich nach jedem blit sdl_updateRect mache

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    In welcher Reihenfolge machst du das?
    Ich wuerde erst die Rects updaten und dann Flippen.
    Ansonsten weiß ichs auch nicht.

  8. #8
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Hmm...

    Was mich interressieren würde ist. ob du die Tiles nach dem Laden schon ins Displayformat konvertiert hast.

    Ich hab noch so ein altes Loki-Buch über SDL zu Hause, worin beschrieben wurde dass man um gute Performance zu erreichen die Tiles zuerst ins Displayformat konvertieren muss. Leider weiß ich den Funktionsnamen nicht auswendig :-(
    Geändert von Lin728 (21-08-2017 um 14:38 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    ja, ich konvertiere die surfaces mit SDL_DisplayFormat(Alpha)
    erst update ich das Rect und dann flippe ich (aus... :-D) den bildschirm (bzw. den speicher)

    schade - falls jemand mal nen blick in den source werfen will, der ist auf www.lanadminsystem.de in der downloadsektion zu haben (manchmal ist er auch in der aktuellen techdemo integriert - falls nicht, ist er einzeln downloadbar)

    vielen dank für die bisherigen vorschläge - leider hat keiner geholfen - vielleicht bin ich ja einfach zu blind um etwas zu finden.

    weiss vielleicht jemand, wie man unter linux seinen code profilen kann? es gibt doch tools, die messen wie lange sich ein programm in welcher funktion aufhält.... gibts sowas für linux?

    gruss
    martin

  10. #10
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Das Vorgehen, das du beschreibst, ist richtig, wenn du kein Flackern willst (im Hintergrund zeichnen, nachher swappen - aka Doppelbufferung). Kann es sein, dass du unter Linux einfach keinen (guten) Grafikkartentreiber installiert hast? Ich kann beispielsweise auf meinem Laptop CS2 in anständiger Auflösung spielen(unter Windows) und habe (unter Linux) beim Tuxracer 3Frames/Sec...

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  11. #11
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Hmm...

    @Bischi: Tuxracer ist ein OpenGL-Spiel welches ohne OpenGL beschleuningung net ordentlich laufen kann. Bei 2d-spielen ist das meist anders -

    Verwendest du Bilder mit ColorKey(Transparenz) oder Alpha-Kanal? Alpha-Bilder auf X-basierenden Platformen is sowieso ein bisschen ein dont -woweit ich weiß unterstützt SDL die RENDER extension noch nicht. Wenn ja, verwendest du RLE?
    Geändert von Lin728 (21-08-2017 um 16:25 Uhr)

  12. #12
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von ceisserer
    @Bischi: Tuxracer ist ein OpenGL-Spiel welches ohne OpenGL beschleuningung net ordentlich laufen kann. Bei 2d-spielen ist das meist anders - da ein paar bilder blitten schon die grindigsten Treiber hinbekommen.
    Hinbekommen schon - aber geschwindigkeitsmässig? Weisst ja nicht, wie das im Hintergrund von sdl aussieht (ich zumindest nicht) - war nur so ne Idee - ich würds zur Sicherheit mal noch auf ner anderen Plattform testen, bevor ich nen riesigen aufwand betreiben würde, falsche Schuldige zu finden

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  13. #13
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    hehe - unter linux rennt das bei mir (auf meinem 2100+) mit 50-60 frames - unter windows wurde mir von einigen leuten eine framerate von 5 gemeldet (unter macos auch nicht besser).

    bei der linuxversion hat es schon einigen leuten geholfen die binaries selber zu bauen - aber so ein sprung kann doch trotzdem nicht sein - das spiel sollte doch locker auf nem 500mhz rechner ohne 3d-karte laufen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •