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

[SFML] Wykrywanie koloru piksela względem okna

Ostatnio zmodyfikowano 2016-05-27 13:12
Autor Wiadomość
doman100
Temat założony przez niniejszego użytkownika
[SFML] Wykrywanie koloru piksela względem okna
» 2016-05-23 13:28:37
Witam. Piszę taką drobną aplikację i potrzebuje w niej dwóch rzeczy.
1)Wykrywania kolizji ze skomplikowanymi wielokątami za pomocą pobierania koloru obiektu
2)Obrotu sprite'ów

1) Umożliwia mi to klasa sf::Image gdzie mogę pobierać kolory pikseli ale nie mogę obracać rotować obrazkami
2) Umożliwia mi to klasa sf::Sprite gdzie rotowanie jest proste ale za cholerę nie mogę pobierać kolorów

Stąd moje pytanie. Czy jest możliwe pobieranie koloru piksela w oknie? Ewentualnie macie może jakieś rozwiązanie mojego problemu? Z góry dzięki za odpowiedź.
P-148511
Gibas11
» 2016-05-23 14:09:37
Zależy Ci na prędkości?
Zawsze możesz użyć metody capture z klasy sf::RenderWindow i operować na zwróconym sf::Image.
P-148512
doman100
Temat założony przez niniejszego użytkownika
» 2016-05-23 15:31:39
Niestety, trochę mi zależy. Ta metoda jest zbyt wolna.
P-148513
Gibas11
» 2016-05-23 15:34:31
Może przerobienie tej mini-biblioteki pomoże? (https://github.com/SFML/SFML​/wiki​/Source%3A-Simple-Collision-Detection-for-SFML-2) Zapewnia całkiem wydajną detekcję kolizji z dokładnością do jednego piksela i wystarczyłoby dodanie w kilku miejscach warunku z kolorem.
P-148514
maly
» 2016-05-23 15:35:05
Funkcja ze względu na każdorazowe pobieranie kopii obrazu(sf::Image) ze sprajta jest czasochłonna ale jako podstawa do dostosowania w swoim kodzie powinna wystarczyć.
C/C++
bool getColorFromSprite( const sf::Sprite & Sprite, sf::Vector2f Position, sf::Color & Color, sf::Vector2f & PosOnSprite )
{
    Position = Sprite.getInverseTransform().transformPoint( Position );
    if( Sprite.getLocalBounds().contains( Position ) )
    {
        PosOnSprite = Position;
        Color = Sprite.getTexture()->copyToImage().getPixel( Position.x, Position.y );
        return true;
    }
    return false;
}
P-148515
doman100
Temat założony przez niniejszego użytkownika
» 2016-05-23 16:24:43
Dzięki, choć najlepsza w moim przypadku byłaby funkcja pozwalająca obracać obiekty typu sf::Image tak jak sprajty ale na pewno się przyda.
P-148519
michal11
» 2016-05-23 16:52:28
Może podziałaj coś z dziedziczeniem i stwórz swój własny typ. Odsyłam do dokumentacji SFMLa.
P-148520
doman100
Temat założony przez niniejszego użytkownika
» 2016-05-27 00:57:47
A może jakaś funkcja spoza SFMLa do pobierania koloru pixela z danego okna?
P-148604
« 1 » 2
  Strona 1 z 2 Następna strona