{"id":3067,"date":"2026-05-07T08:00:00","date_gmt":"2026-05-07T06:00:00","guid":{"rendered":"https:\/\/www.fuhselab.de\/?p=3067"},"modified":"2026-04-29T13:10:16","modified_gmt":"2026-04-29T11:10:16","slug":"c-und-sdl-grafikfenster-1","status":"publish","type":"post","link":"https:\/\/www.fuhselab.de\/index.php\/2026\/05\/07\/c-und-sdl-grafikfenster-1\/","title":{"rendered":"C++ und SDL Grafikfenster 1"},"content":{"rendered":"\n<p>Nach dem L\u00e4nderquiz und dem Textprogramm geht es jetzt weiter mit Grafikfenstern per SDL\u2026<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Vorbemerkungen:<\/strong><\/p>\n\n\n\n<p>Drei Grafikoberfl\u00e4chen stehen uns grunds\u00e4tzlich zur Verf\u00fcgung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SDL<\/li>\n\n\n\n<li>GTK<\/li>\n\n\n\n<li>Qt<\/li>\n<\/ul>\n\n\n\n<p>In den n\u00e4chsten Wochen geht es hier besonders um SDL und GTK.<\/p>\n\n\n\n<p>SDL Grafikfenster 01 = erzeugt wei\u00dfe Linien auf schwarzem Hintergrund (Fenster schlie\u00dft nicht)<\/p>\n\n\n\n<p>SDL Grafikfenster 02 = erzeugt ein rotes (flackerndes) Rechteck und l\u00e4sst sich auch schlie\u00dfen<\/p>\n\n\n\n<p>SDL Grafikfenster 03 = erzeugt einen schwarzen Hintergrund<\/p>\n\n\n\n<p>SDL Grafikfenster 04 = erzeugt einen blauen flackernden Hintergund<\/p>\n\n\n\n<p>SDL Grafikfenster 05 = erzeugt einen roten Hintergrund<\/p>\n\n\n\n<p>GTK Grafikfenster 01 = erzeugt ein graues Grafikfenster mit der Abmessung 300&#215;200<\/p>\n\n\n\n<p>GTK Grafikfenster 02 = erzeugt ein graues Grafikfenster mit der Abmessung 600&#215;500<\/p>\n\n\n\n<p>GTK Grafikfenster 03 = erzeugt ein rotes Grafikfenster mit der Abmessung 600&#215;500<\/p>\n\n\n\n<p>GTK Grafikfenster 04 = erzeugt ein graues Grafikfenster mit dem Text \u201cHallo Welt\u201c<\/p>\n\n\n\n<p>GTK Grafikfenster 05 = erzeugt ein graues Grafikfenster mit Schaltfl\u00e4che<\/p>\n\n\n\n<p>Der Compiler braucht f\u00fcr SDL Programme \u00fcbrigens einen modifizierten Befehl:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>g++ -o dateiname.out dateiname.cpp -g -lSDL2<\/li>\n<\/ul>\n\n\n\n<p><strong>Quellcode f\u00fcr C++ und das SDL Grafikfenster 1:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;SDL2\/SDL.h>\n#include &lt;iostream>\n\nint main(int argc, char* argv&#91;]) {\n    \/\/ Initialisierung von SDL\n    if (SDL_Init(SDL_INIT_VIDEO) != 0) {\n        std::cerr &lt;&lt; \"Fehler bei der Initialisierung: \" &lt;&lt; SDL_GetError() &lt;&lt; std::endl;\n        return 1;\n    }\n\n    \/\/ Erstellung eines Fensters mit den Ma\u00dfen 640x480 Pixel\n    SDL_Window* window = SDL_CreateWindow(\"Mein erstes Grafikfenster 2026\", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);\n    if (!window) {\n        std::cerr &lt;&lt; \"Fehler bei der Erstellung des Fensters: \" &lt;&lt; SDL_GetError() &lt;&lt; std::endl;\n        return 1;\n    }\n\n    \/\/ Initialisierung des Grafiktreibers\nSDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0); \/\/ add 0 as the flags\n    if (!renderer) {\n        std::cerr &lt;&lt; \"Fehler bei der Erstellung des Grafiktreibers: \" &lt;&lt; SDL_GetError() &lt;&lt; std::endl;\n        return 1;\n    }\n\n    \/\/ Zeichnen eines schwarzen Hintergrunds\n    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);\n    SDL_RenderClear(renderer);\n\n    \/\/ Zeichnen einer wei\u00dfen Schleife\n    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);\n    for (int i = 0; i &lt; 100; i++) {\n        int x1 = rand() % 640;\n        int y1 = rand() % 480;\n        int x2 = rand() % 640;\n        int y2 = rand() % 480;\n\n        SDL_RenderDrawLine(renderer, x1, y1, x2, y2);\n    }\n\n    \/\/ Aktivierung des Grafiktreibers\n    SDL_RenderPresent(renderer);\n\n    \/\/ Warten auf Benutzerinteraktion (z.B. Mausklick)\n    bool quit = false;\n    while (!quit) {\n        for (Uint32 type = SDL_QUIT; ; ) { \/\/ remove the call to SDL_EventState and use a loop variable instead\n    SDL_Event event;\n    while ((type == SDL_QUIT) &amp;&amp; SDL_PollEvent(&amp;event));\n}\n        }\n\n\/\/ Warten auf 1\/60 Sekunden\nSDL_Delay(1000 \/ 60);\n\n\n\/\/ Clean up\nSDL_DestroyRenderer(renderer);\nSDL_DestroyWindow(window);\nSDL_Quit();\n\nreturn 0;\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nach dem L\u00e4nderquiz und dem Textprogramm geht es jetzt weiter mit Grafikfenstern per SDL\u2026<\/p>\n","protected":false},"author":1,"featured_media":543,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[32],"class_list":["post-3067","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding-club","tag-coding-club-peine"],"_links":{"self":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/3067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/comments?post=3067"}],"version-history":[{"count":1,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/3067\/revisions"}],"predecessor-version":[{"id":3068,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/3067\/revisions\/3068"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media\/543"}],"wp:attachment":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media?parent=3067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/categories?post=3067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/tags?post=3067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}