Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: jankowalski25
Biblioteki C/C++

Texture

[klasa] Przechowuje dane obrazu typu » SFML 2.xImage w pamięci karty graficznej.

Składnia

C/C++
#include <SFML/Graphics.hpp>

namespace sf
{
    class SFML_GRAPHICS_API Texture
        : GlResource;
}

Opis szczegółowy

Tekstura może zostać wczytana z pliku (» SFML 2.x » TextureloadFromFile), z pamięci (» SFML 2.x » TextureloadFromMemory) oraz ze strumienia (» SFML 2.x » TextureloadFromStream). Wymienione metody likwidują konieczność jawnego korzystania z obrazu typu » SFML 2.xImage i wczytywania danych za pomocą » SFML 2.x » TextureloadFromImage (można jednak tak zrobić, jeśli istnieje potrzeba zmiany wartości poszczególnych pikseli przed wczytaniem ich do tekstury).

Dodatkowe informacje

Dzięki przechowywaniu danych w pamięci karty graficznej przekazywanie obrazu pomiędzy obiektem tej klasy, a wybranym celem typu » SFML 2.xRenderTarget jest bardzo szybkie. Takie podejście ma jednak również pewne wady, na przykład brak możliwości swobodnej zmiany poszczególnych pikseli, jak w przypadku obiektów typu » SFML 2.xImage. Aby to zrobić, należy najpierw przygotować obraz, a następnie go zaktualizować za pomocą metody » SFML 2.x » Textureupdate. Warto jednak pamiętać, że operacja kopiowania danych pomiędzy obiektami tej klasy, a obiektami typu » SFML 2.xImage jest wolna. Dlatego na przykład w celu uzyskania kolizji per-pixel warto oddzielnie przechowywać informacje o kolizji, chociażby za pomocą
std::vector < bool >
.

Przykłady

Wykorzystanie tekstury do narysowania obrazu przechowywanego w pliku:
C/C++
//wczytywanie tekstury z pliku
sf::Texture tekstura;
assert( tekstura.loadFromFile( "tekstura.png" ) );
//przypisywanie tekstury do sprajta
sf::Sprite sprajt;
sprajt.setTexture( tekstura );
//rysowanie sprajta
okno.draw( sprajt );
Przetwarzanie "klatek wideo" w czasie rzeczywistym:
C/C++
//utworzenie pustej tekstury
sf::Texture tekstura;
assert( tekstura.create( 640, 480 ) );
sf::Sprite sprajt( tekstura );
while( warunek )
{
    //aktualizacja tekstury
    sf::Uint8 * piksele =...; //pobranie następnej "klatki" filmu
    tekstura.update( piksele );
    //aktualizacja stanu okna
    okno.draw( sprajt );
}
Rysowanie za pomocą OpenGL:
C/C++
sf::Texture::bind( & tekstura );
//kod korzystający z OpenGL
sf::Texture::bind( NULL );

Zagadnienia powiązane

SpriteOkreśla teksturę wraz z wybranymi przekształceniami. (klasa)
ImageKlasa do wczytywania, modyfikowania i zapisywania obrazów 2D. (klasa)
RenderTexture (klasa)

Linki zewnętrzne

Wykaz elementów dowiązanych

bind Umożliwia wykorzystanie tekstury w kodzie OpenGL. (metoda statyczna)
copyToImage Kopiuje teksturę do obiektu typu » SFML 2.xImage (metoda)
create Tworzy nową teksturę o podanych wymiarach. (metoda)
generateMipmap Tworzy mipmapę na podstawie obecnej zawartości tekstury. (metoda)
getMaximumSize Zwraca maksymalny rozmiar tekstury wspierany przez sterowniki karty graficznej. (metoda statyczna)
getNativeHandle Pobiera uchwyt do tekstury OpenGL. (metoda)
getSize Zwraca rozmiar tekstury. (metoda)
isRepeated Informuje, czy powtarzanie tekstury podczas rysowania poza jej obszarem jest włączone. (metoda)
isSmooth Informuje, czy rozmazywanie tekstury jest włączone. (metoda)
isSrgb Informuje, czy następują przekształcenia pomiędzy przestrzenią kolorów sRGB oraz liniową przestrzenią kolorów. (metoda)
loadFromFile Wczytuje teksturę z podanego pliku. (metoda)
loadFromImage Wczytuje teksturę z obrazu typu » SFML 2.xImage. (metoda)
loadFromMemory Wczytuje teksturę z pamięci. (metoda)
loadFromStream Wczytuje teksturę ze strumienia typu » SFML 2.xInputStream. (metoda)
operator= Przeciążenie operatora przypisania. (operator - metoda)
setRepeated Włącza lub wyłącza powtarzanie tekstury podczas rysowania poza jej obszarem. (metoda)
setSmooth Włącza lub wyłącza rozmazywanie tekstury. (metoda)
setSrgb Włącza lub wyłącza przekształcenia pomiędzy przestrzenią kolorów sRGB oraz liniową przestrzenią kolorów. (metoda)
Texture Tworzy obiekt tej klasy. (konstruktor)
update Aktualizuje zawartość tekstury. (metoda)
~Texture Niszczy obiekt tej klasy. (destruktor)