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

[c++/SFML] Bitmapa nie wyświetla się...

Ostatnio zmodyfikowano 2012-04-21 15:50
Autor Wiadomość
Admixior
Temat założony przez niniejszego użytkownika
[c++/SFML] Bitmapa nie wyświetla się...
» 2012-04-21 15:50:04
Witam.
Próbuję wyświetlić bitmapę ładując ją z pixelów w pamięci. Ale nie chce się ona rysować w ogóle na ekranie.
C/C++
cv::Mat image_cam;
char * rgba_data = new char[ 1024 * 768 * 4 ];
for( int i = 255, x = 230; i >- 1; i -= 5, x++ )
{
    while( wnd.GetEvent( zdarzenie ) )
    {
        if( zdarzenie.Type == sf::Event::Closed )
        {
            wnd.Close();
        }
    }
    cap.read( image_cam ); // get a new frame from camera
    conv_rgb2rgba(( uchar * ) image_cam.data, rgba_data, 1024 * 768 ); //sfml ładuje tylko rgba, a kamera nie wiem czy może tak zapisywać
    bmp.LoadFromPixels( 1024, 768,( Uint8 * ) rgba_data );
    alfa2.SetImage( bmp );
    wnd.Clear();
    //if(x<270)act_frame.SetImage(wstep_frame[x]);
    //act_frame.SetColor(Color(255,255,255,i));
    wnd.Draw( alfa2 );
    //wnd.Draw( act_frame );
    wnd.Display();
}

Usuwając "wnd.Clear();" pokazują się na przemian 2 ostatnie klatki czyli nawet sfml nie kwapi się rysować sprita alfa2.
Funkcje
C/C++
cap.read( image_cam ); // get a new frame from camera
conv_rgb2rgba(( uchar * ) image_cam.data, rgba_data, 1024 * 768 );
na pewno są dobre. LoadFromPixel() powinna być dobra bo pojawia się odpowiedni rozmiar i pixele są pokolorowane w zmiennej bmp.

//edit: przed chwilą dodałem 2 instrukcje.
C/C++
bmp.SaveToFile( "file_cam.jpg" );
bmp.LoadFromFile( "file_cam.jpg" );
i ooo działa. Ale wydajność jest wiadomo jaka:(
Jeśli wiecie macie pomysł co może być źle to mówcie.


//edit: Problem rozwiązany. W funkcji conv_rgb2rgba(...) jako 4 kanał alfa dodawałem 0 zamiast 0xff. Czyli było zupełnie przeźroczyste xD.
Mam nadzieję że nigdy więcej nie popełnię takiej wpadki.
P-54974
« 1 »
  Strona 1 z 1