Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
10.12.2001, 20:40
Tomz



dank dhcc hab ich mal mit sdl angefangen, und ich muss sagen, dass es sehr einfach ist (in den anfängen auf jedenfalls).
doch nun stellt sich mir schon ein kleines problem. ich möchte, das ich bitmaps durchsichtig machen kann. ich meine natürlich nicht das ganze BMP, weil das wäre ja unnütz. ich meine eher sowas wie nen alpha kanal oder so.

für mich gibt es zwei möglichkeiten, wobei ich bei beiden nicht weiss, wie dass ich sie implementieren soll.

1. Alphakanal
Ich mache so eine art alphakanal, dass zum Beispiel alles mit der RGB farbe (0,0,74) durchsichtig wird. leider null peil wie realisieren.
2. Vor dem Spiel bearbeiten
ich könnte eine funktion schreiben, durch die zuerst alle surfaces, die durchsichtig gemacht werden müssen, durchlaufen. dort mache ich dann eine schleife im stil von
Quellcode:
for(x=1; x<= PLAYER_BMP_W; x++)
.for(y=1; y<= PLAYER_BMP_H; y++)
..if(pixelcolor(player,x,y) == SDL_RGBMap(SurfScreen->blabla, 0,0,74))
...PixelIsInvisible(player,x,y)

das soll heissen, dass jeder einzelne pixel kontrolliert wird, ob er die farbe enthält, und wenn ja, dann wird der wert auf invisible gesetzt.

ich hoffe, ihr versteht was ich meine. leider sind die funktionen pixelcolor und pixelisinvisible nur fiktiv, dass heisst, ich weiss nicht ob es sie gibt, oder wie sie heissen.
falls mir jemand nur solche funktionen angeben könnte, dann wäre ich dankbar, weil den rest könnte ich auch selber machen.

also, kann mir jemand helfen. habe letzte woche fett die doku umgewälzt, bin auch weiter gekommen dadurch, nur leider habe ich diese woche wegen der schule wenig zeit.

thnx for help...

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...


Dieser Beitrag wurde am 10.12.2001 um 20:42 von Tomz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
10.12.2001, 20:51
Archangel



(hier ist das original)

Zitat:

- Transparenz/Colorkeying (kommt in Kapitel 6)

by Prefect

naja, dann hoff mal, das sich der Herr Prefect mit seinen SDL-tuts ein bissl beeilt ;)

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
002
10.12.2001, 21:46
Jehova-3



Bin im moment zu faul um genau nachzusehen, wie es ging, aber die releveante Funktion lautet:
SDL_SetColorKey

--

Are you gonna miss me ?
Only until I go to the Newsstand and buy a Hustler

zum Seitenanfang zum Seitenende Profil || Suche
003
10.12.2001, 22:13
Tomz



ok, thanx, ich blätter (klick) mal die referenz durch. penn ich halt wieder ein bisschen wenig, is wurschrt, das isses wert...

falls ich was finde poste ich es...
[edit]
hmm, ich habe eine zündende idee. ich drucke mir rasch die deutsche version über diese SDL_SetColorKey und SDL_SetAlpha aus. In der englishen version versteh ich nicht ganz alles...

ma kukn was ich fertigbringe...
[/edit]

2nd edit

die deutsche doku auf libsdl.org ist scheisse. tip von mir, bleibt bei der englischen, auch wenn ihr nicht alles 100 pro versteht, sie ist viel besser (genauer, mehr). ich probier mal weiter

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...


Dieser Beitrag wurde am 10.12.2001 um 23:01 von Tomz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
11.12.2001, 07:19
Jehova-3



So, hab mal in mein Testprogramm reingeguckt

Quellcode:
temp = SDL_LoadBMP("galaxien.bmp");
if (!temp) {
  fprintf(stderr, "galaxien.bmp konnte nicht geladen werden: %s\n",SDL_GetError());
  exit(1);
}
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, SDL_MapRGB(temp->format, 0, 0, 0));

Damit wird das Bild eingeladen und die Farbe mit dem RGB-Wert (0,0,0) auf durchsichtig gesetzt, danach kann die Surface ganz einfach gemalt werden wie jede andere auch.

--

Are you gonna miss me ?
Only until I go to the Newsstand and buy a Hustler

zum Seitenanfang zum Seitenende Profil || Suche
005
11.12.2001, 22:48
Tomz



ich hab es zwischenzeitlich auch geschafft, aber nur mit dem, was du gesagt hast, jenova, hat es nicht geklappt. ich musste vor die funktion noch eine andere hinpappen:
Temp = SDL_ConvertSurface(Temp,SurfScreen,SDL_ALPHA_TRANSPARENT);

nun funzt es. habs zwar alleine herausgefunden aber ohne deinen tip mit der SDL_SetColorKey() funktion wäre das nichts geworden.

thnx

btw:
intressierts eigentlich jemanden, was dass ich code. ich meine einfach ein beispiel, das zeigt, das sdl einfach ist. prefects tutorials und das amiga spiel hybris haben mich inspiriert. ist noch am entstehen, aber was solls.

nochmals btw: weiss jemand, wo ich eine emu rom von Hybris finde. ich besitze das spiel in echt für den amiga commodore, nur der ist leider schon lange im arsch.

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...


Dieser Beitrag wurde am 11.12.2001 um 22:51 von Tomz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche