Lib für 2D Grafik



  • Welche Lib soll ich für 2D Grafik im Windows Fenster verwenden? Also, eine die Sprites unterstützt für en kleines Game. Hab gehört dass es unter DirectX 9 kein DirectDraw mehr gibt, was ja für die 2D Grafik verantwortlich war. Wäre 2D Grafik dann mit OpenGL leichter, oder gibts dafür was ganz anderes?



  • SDL



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum WinAPI in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Oder wenn dich das "dahinter" etwas mehr interessiert, kannst du auch das DirectDraw aus der 7ér nehmen.

    Oder du nimmst die vortransformierten Vertices in DGraphics9 und stellst deine Sprites als 2 Dreiecke da.
    Aber das ist IMHO leichter, wenn man schon Vorwissen von DDraw mitbringt.

    Achja, außerdem gibt es bei DX noch diese D3DX Library, die viele Sachen schon kapselt.



  • MasterCounter schrieb:

    Welche Lib soll ich für 2D Grafik im Windows Fenster verwenden?

    GDI+

    MasterCounter schrieb:

    Hab gehört dass es unter DirectX 9 kein DirectDraw mehr gibt, was ja für die 2D Grafik verantwortlich war.

    Unsinn.

    Bye, TGGC (Ein Jahr Helden)



  • SDL hört sich schon nicht schlecht an, aber geht das überhaupt in Windows Anwendungen, d.h. in Windows Fenstern, z.B. zusammen mit Buttons Edits u.s.w. in einem Client Bereich? Ich denke, das ist nur für die ganz normale Konsole!
    int main()
    {
    .
    .
    .
    }



  • MasterCounter schrieb:

    SDL hört sich schon nicht schlecht an, aber geht das überhaupt in Windows Anwendungen, d.h. in Windows Fenstern, z.B. zusammen mit Buttons Edits u.s.w. in einem Client Bereich? Ich denke, das ist nur für die ganz normale Konsole!
    int main()
    {
    .
    .
    .
    }

    hä? das verstehe ich nicht? weißt du, was die SDL ist?
    http://www.libsdl.org/index.php



  • SeppSchrot schrieb:

    Oder du nimmst die vortransformierten Vertices in DGraphics9 und stellst deine Sprites als 2 Dreiecke da.

    BTW:
    in der DXSDK 8.0 Docu stand, dass transformed Vertices nicht unbedingt von allen Grafikkarten zwingend untersützt werden - wie siehts da in DX9 aus? (bin zu faul jetzt in der DXDocu zu suchen - veilleicht weiß es ja jemand aus dem Stehgreif?)



  • also, ich hab mir jetzt zur sdl mal das hier angeschaut...

    http://www.tr0ll.net/libsdl/docs/sdl-intro/sdl-intro.htm

    Aber da steht doch nix von WinMain etc. kann ich das dann auch mit WinMain, also einer Windows Anwendung zusammen verwenden? Das geht ja nicht oder? Die SDL ist ja mehr so wie Allegro, oder nicht? Wenn ich da jetzt total daneben liege dann klärt mich mal auf... 🙄



  • Vertexwahn schrieb:

    BTW:
    in der DXSDK 8.0 Docu stand, dass transformed Vertices nicht unbedingt von allen Grafikkarten zwingend untersützt werden

    Echt?
    Also die einzige Einschränkung, die ich bei den ältesten mir bekannten Direct3D Beschleunigern finden kann, ist, dass sie evtl. die Vertices nicht im Speicher der Karte ablegen können.
    Das betrifft dann aber sogar die allerersten D3D Versionen und galt auch für die Execution Buffer.

    Bin ich ja echt mal gespannt, ob jemand ne Karte findet, die das nicht draufhat. Muss ja echt ne Möhre sein 😉
    Kann ich mir wirklich nur als rein hypothetischen Fall vorstellen.

    Vielleicht habe ich das Konzept mit der Rendering Pipeline ja auch falsch verstanden, aber ich dachte, dass man die nicht gewünschten Teile sowieso ausschaltet.

    PS: Ich meinte übrigens transformed and lit vertices.



  • TGGC hat die Antwort doch bereits gegeben 😉



  • SDL und Allegro sind portable graphik Bibliotheken, beide haben eine portable main Funktion, bieten aber auch platformabhängige Erweiterungen an.

    Bei SDL musst du in den Source code schauen. win_main.c sollte interessant sein.

    Allegro bietet mit Funktionen wie win_set_window oder blit_to_hdc eigentlich gute Möglichkeiten um es in Kombination mit normalen Windows Programmen zu nutzen. ALLEGRO_NO_MAGIC_MAIN und vielleicht ALLEGRO_AND_MFC müssen vor dem Includen vom Allegro Header definiert werden. Desweiteren muss winalleg.h anstatt von allegro.h includiert werden. Kann alles ausführlich in der Allegro Dokumentation nachgelesen werden.

    Wenn du allerdings das ganze in Kombination mit den WinAPI Widgets benutzen willst dann solltest du das WinAPI eigene GDI oder das neuere GDI+ benutzen. Infos dazu gibt es auf msdn zu Haufen.



  • Ben04 schrieb:

    gibt es auf msdn zu Haufen.

    😃 👍

    BTW: Wenn Allegro etwas wie TO_HDC kann sollte es doch auch problemlos mit den Windows Widgets funzen?! 😕



  • hab mich jetzt für sdl entschieden... 👍 Da hab ich heut auch schon mal en kleines Testspiel geschrieben, aber weiß hier jemand wie man damit Text ausgeben kann... Hab in der Doku nichts gefunden! 😞



  • Bild für jeden Buchstaben malen und dann nacheinander ausgeben.

    Bye, TGGC (Ein Jahr Helden)



  • Oder gleich die Clanlib benutzen!



  • was meinst du mit clanlib?



  • MasterCounter schrieb:

    was meinst du mit clanlib?

    Google hilft.



  • Bye, TGGC (Ein Jahr Helden)



  • Sgt. Nukem schrieb:

    Wenn Allegro etwas wie TO_HDC kann sollte es doch auch problemlos mit den Windows Widgets funzen?! 😕

    Mit blit_to_hdc geht das natürlich allerdings kann es durchaus zu Problem kommen wenn du direkt ins Fenter zeichnest und sich dann an der gleichen Stelle ein Widget befindet.

    hab mich jetzt für sdl entschieden... 👍 Da hab ich heut auch schon mal en kleines Testspiel geschrieben, aber weiß hier jemand wie man damit Text ausgeben kann... Hab in der Doku nichts gefunden! 😞

    Das liegt daran, dass da auch nichts der Art drin steht 😉 . SDL biete keine Unterstüzung für Schriften oder gar für Basisfiguren. Muss alles selbst gecodet werden oder extra Bibliotheken wie SDL_TTF zur Hilfe genommen werden. Allegro ist da ein wenig anders.



  • Ben04 schrieb:

    Sgt. Nukem schrieb:

    Wenn Allegro etwas wie TO_HDC kann sollte es doch auch problemlos mit den Windows Widgets funzen?! 😕

    Mit blit_to_hdc geht das natürlich allerdings kann es durchaus zu Problem kommen wenn du direkt ins Fenter zeichnest und sich dann an der gleichen Stelle ein Widget befindet.

    Das tut man ja auch nicht. 🤡


Anmelden zum Antworten