Ĺadny brzuch
Mam pytanie wiem, że DirectDraw nie udostępnia efektu częściowej przeźroczystości. Czy jest jakiś sposób żeby to zrobić nie używając D3D?
Mam zamiar to zrobić bezpośrednio pixel po pixelu, ale nie będzie to za szybkie no i pisania trochę będzie, bo nowa funkcje Blt będzie trzeba napisać.
Jak zrobić ten prosty efekt bez zbędnych komplikacji i bez D3D?
chyba to:
http://msdn.microsof...itmaps_2y9g.asp
Tak wygląda funkcja, ale gdzieś jest w niej błąd tylko gdzie?
void Kafle::Blt_Alpha(LPDIRECTDRAWSURFACE Dest, RECT Dest_Rect, LPDIRECTDRAWSURFACE Source, RECT Source_Rect, Byte Alpha)
{
HDC hdc_Dest, hdc_Source;
BLENDFUNCTION blend;
//Wypelniamy strukture BLENDFUNCTION
blend.BlendOp=AC_SRC_OVER;
blend.BlendFlags=0;
blend.SourceConstantAlpha=Alpha;
blend.AlphaFormat=AC_SRC_ALPHA;
if ((Dest->GetDC(&hdc_Dest) == DD_OK) && (Source->GetDC(&hdc_Source) == DD_OK))
{
AlphaBlend(hdc_Dest,Dest_Rect.left,Dest_Rect.top,Dest_Rect.right-Dest_Rect.left,Dest_Rect.bottom-Dest_Rect. top,hdc_Source,Source_Rect.left,Source_Rect.top,Source_Rect.right-Source_Rect.left,Source_Rect.bottom- Source_Rect.top,blend);
Dest->ReleaseDC(hdc_Dest);
Source->ReleaseDC(hdc_Source);
}
}
I jeszcze jedno jak dodać do tego kolor kluczowy (całkowitej przeźroczystości)??
Użytkownik Squall0 edytował ten post 04 marzec 2006, 09:25
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam zamiar to zrobić bezpośrednio pixel po pixelu, ale nie będzie to za szybkie no i pisania trochę będzie, bo nowa funkcje Blt będzie trzeba napisać.
Jak zrobić ten prosty efekt bez zbędnych komplikacji i bez D3D?
chyba to:
http://msdn.microsof...itmaps_2y9g.asp
Tak wygląda funkcja, ale gdzieś jest w niej błąd tylko gdzie?
void Kafle::Blt_Alpha(LPDIRECTDRAWSURFACE Dest, RECT Dest_Rect, LPDIRECTDRAWSURFACE Source, RECT Source_Rect, Byte Alpha)
{
HDC hdc_Dest, hdc_Source;
BLENDFUNCTION blend;
//Wypelniamy strukture BLENDFUNCTION
blend.BlendOp=AC_SRC_OVER;
blend.BlendFlags=0;
blend.SourceConstantAlpha=Alpha;
blend.AlphaFormat=AC_SRC_ALPHA;
if ((Dest->GetDC(&hdc_Dest) == DD_OK) && (Source->GetDC(&hdc_Source) == DD_OK))
{
AlphaBlend(hdc_Dest,Dest_Rect.left,Dest_Rect.top,Dest_Rect.right-Dest_Rect.left,Dest_Rect.bottom-Dest_Rect. top,hdc_Source,Source_Rect.left,Source_Rect.top,Source_Rect.right-Source_Rect.left,Source_Rect.bottom- Source_Rect.top,blend);
Dest->ReleaseDC(hdc_Dest);
Source->ReleaseDC(hdc_Source);
}
}
I jeszcze jedno jak dodać do tego kolor kluczowy (całkowitej przeźroczystości)??
Użytkownik Squall0 edytował ten post 04 marzec 2006, 09:25