[sfml] Tekstury trzymane w pamięci mniejsze niż rzeczywiste obrazki.
Ostatnio zmodyfikowano 2015-07-05 21:29
suas Temat założony przez niniejszego użytkownika |
[sfml] Tekstury trzymane w pamięci mniejsze niż rzeczywiste obrazki. » 2015-07-05 13:52:51 Witam, no więc piszę program w którym używam wielu dużych obrazków, a i tak przed wyświetleniem je skaluję. Chciałbym trzymać w pamięci taką przeskalowaną teksturę, a nie cały duży obrazek. Nie mam pojęcia jak się za to zabrać. Miałem parę pomysłów, ale wszystkie były raczej takie sobie, i myślę że nie zadziałałyby. szukałem w internecie ale nic nie mogłem znaleźć. Dodam, że nie mogę tych obrazków przeskalować w paincie. |
|
pekfos |
» 2015-07-05 15:24:10 Dodam, że nie mogę tych obrazków przeskalować w paincie. |
Z powodu przezroczystości? Możesz skalować w GIMPie, jeśli tylko o to chodzi. Nie ma sensu trzymać dużych obrazów, skoro nigdy nie używasz ich nieprzeskalowanych do znacznie mniejszych rozmiarów. |
|
suas Temat założony przez niniejszego użytkownika |
» 2015-07-05 18:38:14 Nie, z tego powodu, że to, co piszę jest czymś w rodzaju w rodzaju przeglądarki obrazów. Na początku chciałem to napisać w WINAPI, ale pomyślałem, że dobrze by było, gdyby program działał w fullscreenie. Mniejsze obrazki mają mi służyć jako miniaturki. Jeśli miałbym wczytywać każdą miniaturkę w momencie, gdy mam ją wyświetlić, to przesuwanie suwaka trwałoby okropnie długo. Myślałem nad rozwiązaniem i wymyśliłem coś takiego: sf::Texture textureL; sf::Texture textureT; textureL.loadFromFile( "test.jpg" ); sf::Image image = textureL.copyToImage(); sf::Uint8 * arr = new sf::Uint8[ textureL.getSize().x / 5 * textureL.getSize().y / 5 * 4 ]; const sf::Uint8 * nowa = image.getPixelsPtr();
textureT.create( textureL.getSize().x / 5, textureL.getSize().y / 5 ); textureT.update( nowa ); delete[] nowa;
Poza tym nie wiem jak taki przerobiony obrazek by wyglądał. |
|
1aam2am1 |
» 2015-07-05 19:31:41 Załaduj texture; Przeskalują ją. Narysuj ją na sf::RenderTexture
Załaduj teksture z sf::RenderTexture do swojej tekstury
Masz gotową mniejszą teksture; |
|
suas Temat założony przez niniejszego użytkownika |
» 2015-07-05 21:29:21 działa, dzięki. Do głowy mi nie przyszło, że można rysować po czymś innym niż okno. Chyba muszę dokładniej czytać dokumentację. |
|
« 1 » |