Něják mi nefunguje v SDL bliting do surface, která není oknem - prostě zůstane prázdná....TAk se chci zeptat - existuje v SDL nějáká f-ce, která by mi překopírovala obsah Surface určený obdelníkem do druhé, nebo si ji musím napsat sám?
Fórum › C / C++
Bliting do Surface, ktera není oknem
void DrawIMG(SDL_Surface *img,SDL_Surface *screen, int x, int y, int w, int h, int x2, int y2)
{
SDL_Rect rect;
rect.x = x;
rect.y = y;
SDL_Rect rect2;
rect2.x = x2;
rect2.y = y2;
rect2.w = w;
rect2.h = h;
SDL_BlitSurface(img, &rect2, screen, &rect);
}
mam k tomu aj nejaky komentar:
//na screen nakreslime na suradniciach x y
//obdlznik vyrezany z img
//ak x2, y2 == 0 a w,h == skutocnym rozmerom img
//nejde o výrez.
void sprite::copy(sprite&src, SDL_Rect r)
{
(*ref)--;
if (ref == 0)
{
SDL_FreeSurface(sur);
}
sur = SDL_CreateRGBSurface(
SDL_SWSURFACE,
r.w, r.h, 32,
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
0x000000FF,
0x0000FF00,
0x00FF0000,
0xFF000000
#else
0xFF000000,
0x00FF0000,
0x0000FF00,
0x000000FF
#endif
);
src.draw(src.x,src.y,r,sur);
SDL_UpdateRect(sur,0,0,r.w,r.h);
x = src.x;
y = src.y;
ref = new int;
(*ref) = 1;
SDL_SetColorKey(sur, SDL_SRCCOLORKEY, SDL_MapRGB(sur->format, 255, 0, 255));
a f-ce draw
void sprite::draw(int xx, int yy, SDL_Rect r, SDL_Surface* kam)
{
SDL_Rect rec;
rec.x = xx;
rec.y = yy;
if(sur == NULL)
{
chyba << "VYkreslení prázdné surface\n";
return;
}
else
{
if(SDL_BlitSurface(sur, &r, kam, &rec) == -1)
{
chyba << SDL_GetError() << "\n";
return;
}
}
return;
}
TA f-ce Draw mi ale při vykreslování do okna funguje...
To mephi : Pokud vím, tak ty se nepoužívají - no používají se, ta f-ce je upraví, tak abych je mohl obnovit...A i když je nastavím, tak to nemá vliv....
TAkže už vím, kde je chyba, bohužel nevím jak ji napravit.
Zkusil jsem vykreslit do původní surface, a ono, hele, to funguje...Chyba je asi ve vytváření té nové surface, ale nevím jaká...
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 70 hostů
Podobná vlákna
Prepísanie surface bez príkazu. — založil zgerbiak
Komponenta 3D Graf surface pro Delphi — založil Romek
Pohyb oknem — založil dyžon
Myš nad oknem — založil LJ1024
Problém s pop-up oknem v umístění — založil Tr0n
Moderátoři diskuze