SDL-Rendertext wird nur angezeigt, wenn eine andere Oberfläche gelöscht wurde
-
28-10-2019 - |
Frage
Ich habe eine
timer = TTF_RenderText_Solid( tfont, timeStr.str().c_str(), txtColor );
applySurface(500, 30, timer, screen);
und auf der 'Bildschirm'-Oberfläche habe ich auch meinen Charakter und meine Wand angewendet.Aber aus irgendeinem Grund kann ich den Timer nicht sehen, es sei denn, ich habe bereits die 'Bodenfläche' und die 'Zeichenfläche' NULL.Mache ich etwas falsch?
Lösung
Versuchen Sie, timerUpdate () vor SDL_Flip (Bildschirm) zu setzen.Sie rufen SDL_Flip auf und rufen dann timerUpdate () auf.Sie denken also, OK, das ist in Ordnung. Wenn der Bildschirm das nächste Mal umgedreht wird, wird der Text angezeigt.Was jedoch passiert, ist, dass Sie mehr Flächen oben blenden, bevor der Bildschirm erneut umgedreht wird, und dann den Text nicht sehen können, weil Sie Flächen darüber geblendet haben.Alles was Sie tun müssen, ist die Reihenfolge zu ändern, also
timerUpdate();
if (SDL_Flip(screen) == -1) return 1; //Instead of the other way round
sollte funktionieren.