Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.X] Pochylenie tekstury w SFML

Ostatnio zmodyfikowano 2025-02-22 19:04
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[SFML 2.X] Pochylenie tekstury w SFML
» 2025-02-22 14:52:04
Witam. Piszę na nowo metodę generowania sprajtu budynku.
Poradziłem sobie z renderowaniem ścian przy pomocy sf::Image.
Chciałbym teraz wygenerować dach i aby to zrobić potrzebuję rozciągnąć w taki sposób tekturę by była "pochylona". Jak to zrobić w SFML ?

tekstura wejściowa

tekstura wyjsciowa (taką chcę osiągnąć)

C/C++
sf::Image main_image;
main_image.create( size.x * 16 + 32,( walls_height + size.x / 4 + size.y ) * 16, sf::Color::Red );

// LEFT SIDE OF ROOF
sf::Texture tile_texture = * getSingleTexture( "buildings/parts/roof2" )->texture;
sf::Image tile_image = tile_texture.copyToImage();
sf::Image part_roof_image;
part_roof_image.create( size.x * 16 / 2, size.y * 16, sf::Color::Blue );

for( short y = 0; y < size.y * 16 - size.x / 4 * 16; y += 16 ) {
   
for( short x = 0; x < size.x / 2 * 16; x += 16 ) {
       
       
float dest_x = x;
       
float dest_y = y;
       
part_roof_image.copy( tile_image, dest_x, dest_y );
   
}
}

// rozciągnięcie tekstury
sf::Texture tex;
tex->loadFromImage( part_roof_image );
sf::ConvexShape cshape;
cshape.setPointCount( 4 );
cshape.setPoint( 0, sf::Vector2f( 0, 0 ) );
cshape.setPoint( 1, sf::Vector2f( 100, 100 ) );
cshape.setPoint( 2, sf::Vector2f( 100, 200 ) );
cshape.setPoint( 3, sf::Vector2f( 0, 100 ) );
cshape.setTexture( tex );

// jak przypisać cshape do sf::Image ?
main_image.copy( part_roof_image, 16 - 16 / 2, 16 - 16 / 2 + size.x / 4 * 16 );
P-182136
tBane
Temat założony przez niniejszego użytkownika
» 2025-02-22 19:04:21
Rozwiązaniem jest zastosowanie sf::VertexArray. Ja to zrobiłem w ten sposób, że zdefiniowałem wierzchołki oraz współrzędne tekstury.
P-182137
« 1 »
  Strona 1 z 1