2D Objekte performant zeichnen



  • Hallo,
    ich habe ein Programm in dem eine 2D Landschaft dargestellt wird. Diese kann skaliert und per Mausklick bewegt werden. Zugriff auf diesen "Hintergrund" erhält man über einen HDC.
    Nun sollen auf dieser Landschaft einfache 2D-Objekte bewegt werden, also eine Fahrsimulation. Die aktuellen Positionen werden für jedes Objekt aus einer zugehörigen Datei in einem extra Thread ausgelesen.
    Da ich für dieses Programm nicht allzu viel Zeit aufwenden kann / möchte, habe ich zunächst überlegt anhand der alten und neuen Position sogenannte "dirty rects" zu berechnen, d.h. den neu zu zeichnenden Bereich. Das müsste für viele kleine Objekte relativ performant funktionieren. Die Landschaft müsste dann nur komplett neu gezeichnet werden, wenn die Landschaft skaliert oder bewegt wird. Allerdings könnte es vorkommen, dass der Anwender ein Objekt so nah ran zoomt, dass es den Großteil des Bildschirms einnimmt. Dann würde das Neuzeichnen vermutlich imperformant werden.

    Die 2D Objekte sollen außerdem auswählbar sein, d.h. es ist eine Kollisionserkennung erforderlich.

    Ich möchte möglichst vermeiden mich in eine neue Technologie wie Direct X oder OpenGL einzuarbeiten, da ich denke, dass der Aufwand hierfür relativ hoch wäre.

    Gibt es nicht vielleicht eine Möglichkeit auf einfache Weise 2D-Objekte auf einem HDC performant zu zeichnen?

    Eventuell ein simples 2D Grafik framework, welches auch für den kommerziellen Bereich frei zu verwenden ist?



  • Achso, die 2D-Objekte sin einfache Vektorgrafiken!!!



  • Hmm,
    hatte noch nie jemand die Aufgabe auf einem HDC 2D Vektorobjekte performant zeichnen zu wollen?

    Keine Tipps? 😞

    Irgendein einfaches 2D framework...???



  • Vielleicht is es auch möglich das ganze direkt mit der WinAPI zu zeichnen?



  • Zum reinen Zeichnen ist die GDI+ z.B. toll - aber die wird dir IMO nicht viel bringen, da sie auch nicht schneller ist als die reine GDI.

    Solltest du wirklich schnelles Zeichnen benötigen kommst du um OGL, DX oder SDL nicht herum (letzteres ist das einfachste). Aber für kleine 2D-Sachen benötigst du da wirklich kaum Einarbeitungszeit - also machs einfach 😉

    Greetz
    M.T.



  • OGL und DX sollen wohl OpenGL und DirectX bezeichnen. Aber was ist SDL???



  • WebFritzi schrieb:

    Aber was ist SDL???

    Ne Grafikbibliothek ➡ http://www.libsdl.org/ , http://de.wikipedia.org/wiki/Simple_DirectMedia_Layer



  • mal alles auf ein bild und zeichne das jedesmal komplett neu



  • WebFritzi schrieb:

    Aber was ist SDL???

    Also dass du den Google-Trick nicht kennst wundert mich jetzt aber schon 😉

    Greetz
    M.T.



  • Manuel schrieb:

    WebFritzi schrieb:

    Aber was ist SDL???

    Also dass du den Google-Trick nicht kennst wundert mich jetzt aber schon 😉

    Na, dann such mal nach OGL auf google. Mal sehen, wie viele OpenGL-Links du da findest...



  • WebFritzi schrieb:

    Manuel schrieb:

    WebFritzi schrieb:

    Aber was ist SDL???

    Also dass du den Google-Trick nicht kennst wundert mich jetzt aber schon 😉

    Na, dann such mal nach OGL auf google. Mal sehen, wie viele OpenGL-Links du da findest...

    😃 Okay, bei OGL klappts gerade mal nicht
    Aber bei SDL ists gleich der erste Hit ;P

    Greetz
    M.T.



  • Das kann man ja nicht wissen. Wenn Manuel keine Abkürzungen verwendet hätte, hätte ich nicht mal geantwortet. Der Hauptzweck meines Postes lag darin, Manuel darauf aufmerksam zu machen, dass Abkürzungsbezeichnungen für die LIBs hier fehl am Platze sind.



  • WebFritzi schrieb:

    Das kann man ja nicht wissen. Wenn Manuel keine Abkürzungen verwendet hätte, hätte ich nicht mal geantwortet. Der Hauptzweck meines Postes lag darin, Manuel darauf aufmerksam zu machen, dass Abkürzungsbezeichnungen für die LIBs hier fehl am Platze sind.

    Gut. Wollte auch nicht flamen. Sry 😉

    Man verfällt manchmal in Abkürzungen, wenn diese für einen selbst logisch sind. Mir gings hier im Forum aber auch schon so, dass man irgendne Abkürzung liest und denkt "hä?" und Google auch nix gebracht hat.
    Von daher - ja, du hast Recht WebFritzi.

    PS: Mann klingt mein Name in nem Satz erwähnt doof ^^

    Greetz
    M.T.



  • Gesetztden Fall ich würde SDL verwenden. Wie kann ich hier ein HDC verwenden?



  • frager* schrieb:

    Gesetztden Fall ich würde SDL verwenden. Wie kann ich hier ein HDC verwenden?

    --> Google / Forum für Spiele-/Grafikprogrammierung hier im Board

    Greetz
    M.T.


Anmelden zum Antworten