Graphiken verändern und verschieben



  • @RHBaum sagte in Graphiken verändern und verschieben:

    Die Frage ist auch, Feuerwerk entwickeln ... und was noch ?

    Das "Feuerwerk" ist eigentlich nur eine Metapher für graphische Bewegungs- und Veränderungsvorgänge mit C++. Ich vertiefe gerade meine C++ Kenntnisse im graphischen Bereich und habe mir halt ein Feuerwerk vorgenommen, da es von der Bewegung, der Größen- und Farbänderung und der Transparenz ein gutes Beispiel ist.

    Zu WinAPI: Nun ich dachte, dass WinAPI sozusagen die Basis aller graphischen Funktionen ist und es daher sinnvoll ist es näher kennenzulernen.
    Diese Diskussion hat mich jetzt jedoch dazu gebracht mir ein paar GUIs (momentan Qt) anzusehen.



  • @znieh99
    Wenn du Grafik-Zeugs machen willst, dann sind GUIs nicht das geeignete Werkzeug. Mit GUIs macht man Fenster und Buttons und so Zeugs, keine Feuerwerke. Wenn du Grafikzeugs machen willst, dann schau dir die APIs dazu an, also Direct3D, OpenGL, Vulkan etc.
    Mit WinAPI geht das natürlich auch, aber halt begrenzt. Einfaches 2D Zeugs geht damit gut, aber wenn man irgendwelche nicht-trivialen Transformationen/Blending/... braucht sind andere APIs besser geeignet.



  • @hustbaer sagte in Graphiken verändern und verschieben:

    Wenn du Grafikzeugs machen willst, dann schau dir die APIs dazu an, also Direct3D, OpenGL, Vulkan etc.

    Danke, ich bin am suchen und lesen.



  • Sorry, aber die rohen Grafik-APIs sind schon sehr fortschrittliche Programmierung (ins. weil man auch noch Shader-Skripte erstellen muß).
    Um die Grundlagen von C++ besser zu lernen, habe ich ja extra GUI-Frameworks vorgeschlagen, so daß man dann die Animationslogik selber berechnet und zeichnen läßt.

    Und selbst wenn man später DirectX, OpenGL oder Vulkan benutzen möchte, so bieten diese Framework oftmals entsprechende Render-Controls dafür an.



  • @Th69

    Sorry, aber die rohen Grafik-APIs sind schon sehr fortschrittliche Programmierung (ins. weil man auch noch Shader-Skripte erstellen muß).

    Ja, da hast du recht. Er hat allerdings danach gefragt wie man das üblicherweise macht, und Grafiken rumschieben/skalieren/rotieren/blenden etc. macht man halt üblicherweise mit OpenGL/Direct3D etc. Also zumindest wenn man etwas live am Bildschirm ausgeben will. Ansonsten gibt's noch Zeugs wie OpenCV. Hat aber auch ne ziemlich üble Lernkurve.

    Um die Grundlagen von C++ besser zu lernen, habe ich ja extra GUI-Frameworks vorgeschlagen, so daß man dann die Animationslogik selber berechnet und zeichnen läßt.

    Und selbst wenn man später DirectX, OpenGL oder Vulkan benutzen möchte, so bieten diese Framework oftmals entsprechende Render-Controls dafür an.

    Also Animationen mit GUI Libraries machen fand ich immer sehr mühsam. Wenn man primär Grafikzeugs machen will, dann gibt es einfachere Wege, wie...

    @znieh99
    Wenn du es dir (viel) einfacher machen willst, schau dir Cinder an.
    Alternativ ginge auch SFML.

    SDL2 sollte man vielleicht auch erwähnen. Wobei ich mir Version 2 nie angesehen habe. Die originale SDL fand ich persönlich ziemlich grausam.



  • @znieh99

    Zu WinAPI:

    Ja, die WinAPI bietet nen ziemlich grundlegenden Zugriff auf Windows ....
    Es ist kein Nachteil die zu kennen, weil man sich ne menge von der funktionsweise aus erklären kann.

    Jeder der z.b. Qt wxWidgets, gtk .... verwendet, sollte vielleicht auch mal eine MessageQueue auf C und WinAPI basis mal implementiert haben. Nur fürs Lernen, nicht für "produktive Zwecke".
    Und das sicher auch nicht gleich während der ersten Tage wenn man den C/C++ Einstieg wagt ...

    C/C++ heutzutage ist in sachen Libs / API gar nicht soo verschieden zu anderen Sprachen ... man wird immer mehrere verwenden. Viel / oft unterschiedliche Bibliotheken lernen. Die am tiefsten liegende (dem OS am nächsten) ist vielleicht oft die flexibelste, aber nicht automatisch die Beste. Selten verwendet man Native (OS basis) Bibliotheken.

    Auch bei Grafik ... IMHO der Trend geht auch mehr zu RenderFrameworks anstatt die nativen Grafik libs (OpenGL, DirectX, Vulkan) zu verwenden. Zum Lernen, Dinge einzuschätzen, verständniss isses aber dennoch Vorteilhaft die konzepte zu kennen



  • @RHBaum sagte in Graphiken verändern und verschieben:

    Jeder der z.b. Qt wxWidgets, gtk .... verwendet, sollte vielleicht auch mal eine MessageQueue auf C und WinAPI basis mal implementiert haben. Nur fürs Lernen, nicht für "produktive Zwecke".

    Wozu das denn?



  • Na damit man besser versteht wie so ne GUI eigentlich funktioniert.
    Ich kannte einige GUI Programmierer die nicht wussten wer wie wo wann ihre Message-Handler aufruft. Die denken dann auch nicht gross drüber nach was passiert wenn sie eine Funktion aufrufen die einen modalen Dialog anzeigt - oder auch einfach nur die MessageBox Funktion. "Das geht schon irgendwie."



  • @hustbaer Hm, ich nutze c++ seit über 20 Jahre, davon einen Großteil auch mit GUIs wie MFC und QT. Aber ne Win32 MessageQueue hab ich noch nie von Hand gemacht. Ich habe nicht das Gefühl, das mir was fehlt, nur weil ich lediglich die Theorie kenne.



  • @Tyrdal
    Wenn du weisst wie es funktioniert, dann reicht es vermutlich.
    Die meisten Anfänger und auch viele Fortgeschrittene wissen es aber nicht. Und da der beste Weg es zu lernen nunmal der ist dass man die 2 1/2 Zeilen selbst schreibt...


Anmelden zum Antworten