Grundverständnis Grafikprogrammierung



  • Hi Leute,
    ich habe das Problem, dass mir noch das Grundverständnis fehlt, wo die Grafikprogrammierug ansetzt. Das ist schwer zu formulieren, da ich halt echt gar keinen Ansatz habe. 😕
    Also ich habe mich schon länger mit ANSI C beschäftigt und möchte behaupten, dass ich kein totaler Anfänger mehr bin. Aber ALLE Tutorials, die ich gefunden und durchgearbeitet habe, arbeiten "nur" mit der Konsole.(typische Anwendungsinhalte: Arrays,Listen,Datentypen,Speicherverwaltung,Streams usw.) Da ist überhaupt gar kein Ansatz zur Grafikprogrammierung. Ich könnte nicht einmal berechnete Werte in einem 2d Graph ausgeben lassen, geschweige denn eine GUI erstellen.
    Mir geht es schon auch darum was hinter den "What-you-see-is-what-you-get"-Programmierschnittstellen passiert. Und selbst davon kenn ich keine für reines C ohne C++.
    Ich erhoffe mir jetzt keine perfekten Erörterungen, sondern bitte nur ein paar erste Ansätze, als Anhaltspunkte, die ich dann selber weiter verfolgen kann.
    PS: An Eigeninitiative mangelt es nicht. BALD SIND SOMMERFERIEN!!!



  • C bietet von sich aus keine Grafik, deshalb sind die meisten Dinge, die man im Zusammenhang mit der Sprache selbst mitbekommt, auch eher sprachbezogen. Um grafisch zu programmieren, musst du also auf externe Bibliotheken zurückgreifen. Wenn du relativ low-level einsteigen willst (was am Anfang nicht unbedingt immer ganz einfach ist), kann ich zu OpenGL raten. Ansonsten für 2D-Programmierung ist SDL relativ verbreitet. Du kannst auch erst mit SDL anfangen und, wenn du die Grundprinzipien verstanden hast, tiefer in die Materie einsteigen. Eventuell ist auch das C-Binding von SFML eine Alternative, ich kenne SFML jedoch nur von C++. SDL hingegen habe ich auch relativ lange benutzt. Für C++ finde ich es persönlich nicht ideal, aber wenn du C programmierst, ist SDL wohl keine schlechte Idee. Es ist schon ein grosses Erfolgserlebnis, wenn man sein erstes Sprite auf dem Bildschirm bewegt... 🙂



  • Wichtig ist erst einmal, dass du dir Klar wirst ob du 2D oder 3D haben willst.

    Wenn du dich entschieden hast such dir eines der Bibliotheken | Schnittstellen aus die "Nexus" aufgeschrieben hat.

    Denn die Einarbeitung dauert relativ lange. Wenn du dich z.B für 3D entschieden hast und dann feststellt du hättest lieber 2D,(oder umgekehrt) hast du eine Menge Einarbeitungszeit verschwendet.
    (Ok, mit 3D geht auch 2D wenn man eine Koordinate gleich läst bzw. Parallelprojektion nimmt. Aber trotzdem solltest du dir vom Prinzip klar machen was du eigentlich möchtest)



  • Um grafisch zu programmieren, musst du also auf externe Bibliotheken zurückgreifen.

    Aber wenn C von sich aus überhaupt gar keine Grafik unterstützt, was steht denn dann in solchen Bibliotheken drin? Die müssen ja letztendlich auch auf C-Code basieren?
    Wo wird meine 2d-3d Objekt denn ausgegeben?
    Man mussd dann doch eine komplett neue ANzeige erstellen. In der Befehlszeile ist die Darstellung ja nicht möglich!
    Gruß Balu.



  • Balu Jr. schrieb:

    Um grafisch zu programmieren, musst du also auf externe Bibliotheken zurückgreifen.

    Aber wenn C von sich aus überhaupt gar keine Grafik unterstützt, was steht denn dann in solchen Bibliotheken drin? Die müssen ja letztendlich auch auf C-Code basieren?

    Da stehen Funktionsaufrufe drin, die vom Betriebssystem bereitgestellt werden. Du koenntest aber theoretisch auch mit reinem C-Code auf z.B. den Speicherbereich deiner Grafikkarte zugreifen, das waere aber etwas umstaendlich.



  • Wie das dann so im groben aussähe frage ich wahrscheinlich besser nicht!? 😃
    Liegen an bestimmten Stellen im Speicher bestimmte Funktionen der GPU, oder wie?
    Und hat man denn überhaupt die rechte einfach auf diesen Speicher zuzugreifen?
    Das liefe dann unmittelbar über den Graka-treiber oder wie?
    Wo setzen denn die Programmierschnittstellen DirectX und OpenGL an? Oder gehöhren die hier gar nicht hin?
    Erstmal danke für Antwort!





  • Das ist ja echt wiedrmal ein unglaublich komplexes Thema. (Ich hatte nichts anderes erwartet)
    Ich glaube als nächsten Schritt lerne ich zusätzlich zu ANSI C ersteinmal C++, damit ich bei solchen größeren grafischen Projekten wenigstens die Übersichtlichkeit der Objektorientierung ausnutzen kann!
    Die dortigen automatischgenerierten (Windows-)Forms müssten ja dann eigentlich auch über die Graka also DirectX laufen! Dann guck ich mal was da so hinter steckt!



  • Warum willst du eine eigene GUI oder Grafikschnittstelle erstellen?


Anmelden zum Antworten