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

[SFML] wykrywanie koloru poprzez rendertexture+sprite.getcolor

Ostatnio zmodyfikowano 2019-08-30 13:54
Autor Wiadomość
andruplay9
Temat założony przez niniejszego użytkownika
[SFML] wykrywanie koloru poprzez rendertexture+sprite.getcolor
» 2019-08-29 13:49:10
jak powyżej próbowałem stworzyć alternatywę dla wykrycia koloru z użyciem image=window.capture
sęk w tym, że nie wykrywa koloru tak jak chce (choćby cała tekstura jest czarna)
kod:
przed pęntlą
C/C++
sf::RenderTexture texturka;
if( !texturka.create( 4000, 2000 ) )
{
    return - 1;
}
texturka.clear( sf::Color::Black );
w pętli
C/C++
texturka.clear( sf::Color::Black );
texturka.draw( linia );
texturka.draw( text );
texturka.draw( text2 );
texturka.draw( figury[ p ] ); // or any other drawable
texturka.display();

window.setView( View );
window.clear( sf::Color::White );
/*window.draw(linia);

       
        window.draw(text);
        window.draw(text2);
        window.draw(figury[p]);*/
const sf::Texture & texture = texturka.getTexture();
sf::Sprite stexturka( texture );
window.draw( stexturka );
window.display();
i reszta kodu
C/C++
testfall = true;
//sf::Image obraz=window.capture();
sf::Color testup, testup1;
sf::Sprite ctextur, ctextur1;
ctextur.setTexture( texture );
ctextur1.setTexture( texture );
for( int i = 0; i < 25; i++ ) {
   
    ctextur.setTextureRect( sf::IntRect( px1 + 25, py1 + 50 + i, 2, 2 ) );
    ctextur1.setTextureRect( sf::IntRect( px1 - 25, py1 + 50 + i, 1, 1 ) );
    testup = ctextur.getColor();
    if( testup ==( sf::Color::White ) ) { cout << px1; }
    if( testup ==( sf::Color::Black ) ) { cout << "test"; }
    testup1 = ctextur1.getColor();
    cout << '\n';
    if( testup ==( sf::Color::Black ) || testup1 ==( sf::Color::Black ) ) { testfall = false; fallup = i; } }
if( testfall == true ) { py1 += 4; }
//if(testfall==false && fallup>0){py1-=fallup; fallup=0;}
P-175138
pekfos
» 2019-08-29 15:37:59
getColor() zwraca taki kolor, jaki sam sobie ustawisz przez setColor(). To nie ma nic wspólnego z kolorem pikseli tekstury.
P-175140
andruplay9
Temat założony przez niniejszego użytkownika
» 2019-08-29 16:19:45
tak myślałem. Teraz musze szukać alternatywy :(
tak z ciekawości, da się przerobić texture/sprite na sf:image? najlepiej określoną część.
P-175141
jankowalski25
» 2019-08-29 19:07:48
P-175143
andruplay9
Temat założony przez niniejszego użytkownika
» 2019-08-30 13:54:17
dobra znalazłem obejście
1.Przenieść całość do stworzonej tekstury.
2.Stworzyć sprite który jest częścią powyższej tekstury.
3.Przerobić sprite na kolejną stworzoną teksturę.
4.Teksturę z punktu 3 przerobić na image.
Masa obejścia ale na pewno znacznie bardziej efektywne dla małego obszaru (tak 150x150) niż image=window.capture (zwłaszcza, że tekstury trzeba robić raz a potem tylko update:)
P-175146
« 1 »
  Strona 1 z 1