Biblioteki C++
06. Tekstury i Sprajty
[lekcja]
Tekstury i Sprajty
Ż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.
#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;
}
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.