Die SDL Experimente gehen mit dem zweiten SDL Grafikfenster weiter…

Vorbemerkungen:

SDL Grafikfenster 02 erzeugt ein rotes, flackerndes Rechteck und lässt sich auch schließen

Der Compiler braucht für SDL Programme übrigens einen modifizierten Befehl:

  • g++ -o dateiname.out dateiname.cpp -g -lSDL2

Quellcode für C++ und das SDL Grafikfenster 2:

#include <SDL2/SDL.h>
#include <iostream>

int main(int argc, char* argv[]) {
    // Initialize SDL
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        std::cerr << "Error initializing: " << SDL_GetError() << std::endl;
        return 1;
    }

    // Create a window with the title "My first graphics program"
    SDL_Window* window = SDL_CreateWindow("Mein zweites Grafikfenster 2026", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    if (window == nullptr) {
        std::cerr << "Error creating window: " << SDL_GetError() << std::endl;
        return 1;
    }

    // Create a renderer for the window
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
    if (renderer == nullptr) {
        std::cerr << "Error creating renderer: " << SDL_GetError() << std::endl;
        return 1;
    }

    // Set the drawing color to red
    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);

    // Draw a rectangle at position (100, 100) with size 200x150
    SDL_Rect rect = { 100, 100, 200, 150 };
    SDL_RenderFillRect(renderer, &rect);

    // Update the window and renderer
    SDL_RenderPresent(renderer);

    // Handle mouse events
    bool quit = false;
    while (!quit) {
        SDL_Event event;
        while (SDL_PollEvent(&event)) {
            if (event.type == SDL_QUIT) {
                quit = true;
            }
        }

        // Update the window and renderer again to show any changes
        SDL_RenderPresent(renderer);
    }

    // Clean up
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

Von Torsten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert