Ich lerne C++ und SDL2 durch Programmierung eines klassischen Roguelike. Im Moment baue ich die Karte durch einen Teil eines tiles.png
Bild wie dieses Rendering:C++ SDL2 wie einzelne Kacheln zu färben
Ich folgte lazyfoo's tiling tutorial und es funktioniert, aber ich möchte in der Lage sein, jede Kachel Hintergrund- und Vordergrundfarbe zu ändern. Ich kann die Farben der Textur ändern, indem ich etwas wie this other tutorial mache, aber was ist, wenn ich zum Beispiel eine braune Tür irgendwo und eine graue irgendwo anderswo möchte?
Was ist der beste Ansatz hier? Natürlich kann ich nicht Hunderte von Farbkombinationen in PNGs gespeichert haben. Soll ich für jede Kachel eine Textur erstellen oder gibt es einen besseren Weg?
Danke! :)
Danke, das werde ich versuchen. Aber würde 'SDL_SetTextureColorMod' nicht die gesamte Textur beeinflussen? – JoePerkins
Ja. Ganze Textur wird gelb. Eigentlich keine Textur, sondern die modulierende Farbe. Wenn Sie den getaggten Text (farbig) möchten, müssen Sie einen eigenen Text-Renderer schreiben, der die gewünschte Textfarbe definiert (z. B. durch Analysieren der Tags) und die Texturfarbe mit sdl_settexturecolormod ändern. Text ist nur die Fortsetzung farbiger Rechtecke mit unterschiedlichen Texturkoordinaten. – user3811082
Ok, es hat funktioniert. Zuerst benutze ich 'SDL_SetRenderDrawColor' um den Kachelhintergrund zu setzen, dann benutze ich' SDL_RenderFillRect'. Mit 'SDL_SetTextureColorMod' setze ich die Vordergrundfarbe und abschließend mit' SDL_RenderCopy' und 'SDL_RenderPresent' alles rendern. – JoePerkins