Biblioteki C++
06. Tekstury i Sprajty
[lekcja] Żeby narysować obraz w SFML potrzebne są dwie rzeczy - tekstura i sprite.
Tekstura (sf::Texture) jest obiektem przechowującym dane obrazu w pamięci karty graficznej. Można ją wczytać z pliku, np. PNG lub JPG. Sama tekstura nie jest jednak widoczna na ekranie.
Sprite (sf::Sprite) jest obiektem służącym do wyświetlania tekstury w oknie. To właśnie sprite posiada pozycję, obrót, skalę oraz inne właściwości związane z renderowaniem. Do jednego obiektu tekstury można przypisać wiele sprite'ów, dzięki czemu ten sam obraz może być wyświetlany w różnych miejscach na ekranie bez potrzeby wielokrotnego wczytywania pliku (w ten sposób powstają managery tekstur).
Najpierw należy wczytać teksturę, następnie przypisać ją do sprajta, a na końcu narysować sprite w oknie za pomocą funkcji draw(). Poniższy kod właśnie to przedstawia.
Tekstura, którą użyto w programie:
#include <SFML/Graphics.hpp>
#include <iostream>
int main() {
sf::RenderWindow window = sf::RenderWindow( sf::VideoMode( sf::Vector2u( 800u, 600u ) ), "Texture and Sprite" );
sf::Texture texture; if( !texture.loadFromFile( "bies.png" ) ) {
std::cout << "Failed to load texture" << std::endl; return 0; }
sf::Sprite sprite( texture ); sprite.setOrigin( sf::Vector2f( texture.getSize() / 2u ) ); sprite.setPosition( sf::Vector2f( window.getSize() / 2u ) ); sprite.setScale( sf::Vector2f( 2.f, 2.f ) ); while( window.isOpen() ) {
while( const std::optional event = window.pollEvent() ) {
if( event->is < sf::Event::Closed >() )
window.close();
}
window.clear( sf::Color::Black ); window.draw( sprite ); window.display(); }
return 0;
}
Wynik programu:
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.