From 8a732d2d68ef1c7216347e3d81f89da121408182 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 7 Apr 2021 22:17:29 +0200 Subject: [PATCH] Finished Texture's txt. --- 18_sdl_texture.txt | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/18_sdl_texture.txt b/18_sdl_texture.txt index 25be64e..2d594bb 100644 --- a/18_sdl_texture.txt +++ b/18_sdl_texture.txt @@ -1,4 +1,62 @@ +Írjunk egy Textúra osztályt. + +Ez fogja menedzselni az SDL_Texture osztályokat. + +Ahogy a bevezetőben elhangzott, Ez egy kép adatait tartalmazza, viszont ez a +softwares rajzoláshoz optimalizált formában. + +Kirajzolni a Renderer segédfüggvényeivel lehet, ezeket később menjetek vissza, és +implementáljátok be. + +Fontos! + +A renderer.h-t csak a texture.cpp fájlba include-oljátok be! + +Ugyanis, a texture.h kelleni fog a renderer.h-nak is! +És nem lehet kör az inlcude gráfban. + +Ebben az esetben a renderer csak a .cpp fájlban kell, így ez a legegyszerűbb megoldás. + + +------------ + +Megj.: + +Ha a Renderer osztályt a .h fájlban is kellene használni valamiért, akkor előre kellene +definiálni, így: + +--- + +texture.h: + +class Renderer; + +class Texture { + //... +}; + +texture.cpp: + +#include "remderer.h" + +--- + +És ugyanezt el lehetne játszani a Rendererbe is, sőt ha lenne több ilyen körkörös +függőség, azoknál is. + +Nagy projektekben előfordul az ilyen, érdemes fejben tartani, hogy meg lehet +oldani, és hogy így. + +Ez amúgy azért működik, mert a cpp fájlok külön fordítási egységekként vannak +lefordítva (alapból, akkor is, ha csak több cpp fájlt fodítunk egy paranccsal +programmá), és a végén egy utolsó lépésként vannak összelinkelve +(összeállítva) egy futtatható fájllá. És ez a hiba pont a fordítási +lépésben okoz gondot. + +------------ + +És akkor a Texture osztály UML diagramja: |---------------------------------------------------------------------------------------| | class Texture | @@ -50,6 +108,10 @@ get_color_mod: return Color(r, g, b, a) + +Az sdl külön kezeli a színezés paramétert, és az átlátszóságot, de ezt itt egybe vettem, +mert így jobban illik a program felépítéséhez. + ------------------------------------------------------------------------------------------ set_color_mod: