Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Kenvelo
Založen: 27. 03. 2015 Příspěvky: 6
|
Zaslal: 8. říjen 2015, 11:30:00 Předmět: SFML - Dynamická alokace paměti |
|
|
Zdravím, zasekl sem se u alokace paměti pro texturu. Mám funkci která vykresluje pole 10x10 o velikosti čtverce 50x50
a potřeboval bych pro třídní funkci alokovat paměť jelikož neznám přesný počet vykreslených textur. Funkce se dá přirovnat ke grafickému editoru. Když kliknu do pozice x : 7 a y 6 tak zde by se měla vykreslit má zvolená textura
kód: |
class brush
{
public:
.....
void draw(sf::RenderWindow &window);
private:
sf::Texture t_Grass1;
sf::Sprite s_Grass1;
};
void brush::draw(sf::RenderWindow &window)
{
s_Grass1.setTexture(t_Grass1);
} |
Vše ostatní mám jen nevím jak alokovat paměť pro s_Grass1.
Předem díky za radu. |
|
Návrat nahoru |
|
 |
tlevi
Založen: 08. 10. 2015 Příspěvky: 2
|
Zaslal: 8. říjen 2015, 17:46:19 Předmět: |
|
|
Textúry by som určite neukladal do triedy brush. Trieda by mala robiť iba 1 vec (a robiť ju dobre).
Namiesto toho by som si vytvoril triedu "TextureManager", ktorej naivná implementácia by spočívala v načítavaní textúr do hash mapy (resp. unordered) (v prípade, že ešte neboli načítané), napr.:
kód: |
class TextureManager
{
public:
//...
static sf::Texture& getTexture(std::string & filename);
private:
static std::unordered_map<std::string, sf::Texture &> textureMap;
}
|
Pričom getTexture() by zistila, či sa už textúra z daného súboru načítala. Ak áno, vrátila by ju. Ak nie, načítala by ju, pridala do textureMap a vrátila ju.
K tvojej otázke ohľadom s_Grass1 - viacero spritov môže používať tie isté dáta textúry z pamäti. Takže stačí si tie sprity hádzať do std::vectoru napríklad (podobne ako sa textúry v TextureManager-i hádžu do std::unordered_map) a potom cez ne iterovať a renderovať.
A ešte jedna vec - nepriradzuj textúru spritu v každom vykresľovanom frame (aka draw()). Stačí ju priradiť raz, porom to už len vykresľuješ pomocou window.draw(sprite).
SFML 2.3 - Graphics Sprite |
|
Návrat nahoru |
|
 |
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna