[ClanLib] Überprüfen auf Transparenz funktioniert nicht
-
Hi !
Ich möchte gerne eine Grafik in einem bestimmmen Unterrechteck auf Transparenz überprüfen. Leider funktioniert das nicht so wie ich möchte.
bool Node::check_if_subRect_occupied( CL_Surface* surface , CL_Rect* rect ) { //for simplicity... int x0 = rect->left; int x1 = rect->right; int y0 = rect->top; int y1 = rect->bottom; CL_PixelBuffer pxBuffer = surface->get_pixeldata(); //for direct pixel access we need to lock the surface. later we will unlock it. pxBuffer.lock(); //we have an argb image, which means every pixel is made out of 4 bytes. sizeof( int ) is 4 bytes ! int* pixels = (int*) pxBuffer.get_data(); for( int j = y0 ; j < y1 ; ++j ) { for( int i = x0 ; i < x1 ; ++i ) { std::cout << pxBuffer.get_pixel( i , j ).color << "\n"; if( pixels[ j * surface->get_width() + i ] != TRANSPARENT ) { pxBuffer.unlock(); return true; } } } pxBuffer.unlock(); return false; }
Das Problem ist, dass die Methode nicht korrekt funktioniert. Leider finde ich den Fehler nicht.
Dazu muss ich sagen , dass ich vorher schon andere Varianten ausprobiert habe wie pxBuffer.pixel( i , j ).get_alpha(). Allerdings erhalte ich beim Ausführen der ClanLib Funktionen immer 0.
mfg
Tomps: TRANSPARENT ist eine Konstante: const int TRANSPARENT = 0;
-
Hat dein Pixelbuffer überhaput Alpha gesetzt?
Bye, TGGC (Wähle deine Helden)