SDL2: Text anzeigen

(1) Umgebungseinrichtung:

Ubuntu:

sudo apt install libsdl2-dev
# Das Folgende ist eine Erweiterung
sudo apt install libsdl2-image-dev # Wird zum Anzeigen von Bildern in PNG, JPG und anderen Formaten verwendet
sudo apt install libsdl2-mixer-dev # Ein einfacher Mehrkanalmixer
sudo apt install libsdl2-ttf-dev # Wird zum Anzeigen von Text verwendet
sudo apt install libsdl2-gfx-dev # SDL-Grafikzeichnungsprimitive und andere unterstützende Funktionen Autor: Open Source

(2) Zusammenstellung

Beschreibung von SDL2:
pkg-config --cflags --libs sdl2
g++ -Wall test.cpp -o test -I /usr/include/SDL2 -lSDL2 -lSDL2_image

 

Beispiel:

#include <iostream>

/*Da SDL2 in der Sprache C entwickelt wurde, muss hier eine C-Sprachdeklaration hinzugefügt werden*/
extern "C"
{ #include "SDL.h" #include "SDL_ttf.h" }


/*Da die Hauptfunktion in SDL2 vorhanden ist, muss sie entfernt werden. Andernfalls schlägt die Kompilierung fehl!*/
#undef main

const int SCREEN_WIDTH = 680;
const int SCREEN_HEIGHT = 240;

int main(int, char**)
{     // SDL initialisieren     if (SDL_Init(SDL_INIT_VIDEO) != 0) { return -1; }     // TTF initialisieren     if (TTF_Init() != 0) { return -1; }


    

    // SDL_Window anzeigen
    *sdlWindow = SDL_CreateWindow("SDL_ttf", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if (!sdlWindow) { return -1; }

    //Renderer erstellen
    SDL_Renderer *sdlRender = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (!sdlRender) { return -1; }

    // Öffne die Schriftartenbibliothek
    TTF_Font *ttfFont = TTF_OpenFont("./simhei.ttf", 64);
    if (!ttfFont) { return false; }
    
    // Erstelle eine 32-Bit-ARGB-Oberfläche und rendere den angegebenen Text in hoher Qualität , verwendet Alpha-Blending, um eine Schriftart einer bestimmten Farbe zu dithern.
    SDL_Surface *sdlSurface = TTF_RenderText_Blended(ttfFont, „TTF-Schriftarten sind cool!“, SDL_Color{ 255, 255, 255, 255 }); if (!sdlSurface) { TTF_CloseFont
    (ttfFont); return -1; }
    
    // Textur erstellen
    SDL_Texture * sdlTexture = SDL_CreateTextureFromSurface(sdlRender, sdlSurface);
    if (!sdlTexture) { TTF_CloseFont(ttfFont); return -1; }

    // Texttextur zentrieren
    SDL_Rect sdlRect;
    SDL_QueryTexture(sdlTexture, NULL, NULL, &sdlRect.w, &sdlRect.h);
    sdlRect.x = SCREEN_WIDTH / 2 - sdlRect.w / 2;
    sdlRect.y = SCREEN_HEIGHT / 2 - sdlRect. h / 2;

    SDL_Event sdlEvent;
    bool quit = false;
    while (!quit)
    {         while (SDL_PollEvent(&sdlEvent)) { if (sdlEvent.type == SDL_QUIT) { quit = true; brechen; } }

        // Überarbeitete Trilogie
        SDL_RenderClear(sdlRender);
        SDL_RenderCopy(sdlRender, sdlTexture, nullptr, &sdlRect);
        SDL_RenderPresent(sdlRender);

        SDL_Delay(1);
    }

    if (ttfFont) { TTF_CloseFont(ttfFont); } ttfFont = nullptr;
    if (sdlSurface) { SDL_FreeSurface(sdlSurface); } sdlSurface = nullptr;
    if (sdlTexture) { SDL_DestroyTexture(sdlTexture); } sdlTexture = nullptr;
    if (sdlRender) { SDL_DestroyRenderer(sdlRender); } sdlRender = nullptr;
    if (sdlWindow) { SDL_DestroyWindow(sdlWindow); } sdlWindow = nullptr;

    TTF_Quit();
    SDL_Quit();

    0 zurückgeben;
}

Supongo que te gusta

Origin blog.csdn.net/poject/article/details/124541400
Recomendado
Clasificación