Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.08.2010, 19:53

Deckkraft Sprite

Guten Abend,

Ich hättte mal eine Interessensfrage an euch:
Ich wollte ja eig transparentes Sprite dazu sagen, allerdings denke ich, dass das falsch Verstanden werden würde.

Mich würde interessieren, ob es auch eine Möglichkeit gibt, ein (2D) Sprite halb Transparent zu machen, so dass der Hintergrund noch sichtbar ist, aber das Sprite eben den Hintergrund nur überdeckt, und nicht vollkommen Transparent geschalltet ist.

Ich denke mir, dass das zum Beispiel für einen hervorgehobenen Credit interessant sein könnte, da man dann nicht per SDL_ttf mühsam den Text positionieren muss, sondern so einfach ein Bild über den Screen "schiebt".
Möglicherweise gibt es da vielleicht so etwas ähnliches wie einen Colour - Key dafür?

Schönen Abend noch,
Ombalat

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

09.08.2010, 19:57

Meinst du ein Bild mit Credits, dass, wenn man es auf den Hintergrund blittet, eben nur die Schrift sichtbar ist und der Rest des Bildes nicht den Hintergrund versperrt?
Wenn ja würde das in der Tat mit einem Chroma Key bzw. color key gehen. Ansonsten hab ich dich falsch verstanden.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

09.08.2010, 20:30

Mich würde interessieren, ob es auch eine Möglichkeit gibt, ein (2D) Sprite halb Transparent zu machen,

ja das geht über den alphakanal. png unterstützt das zum beispiel. ich weiß nicht ob die sdl das von natur aus kann. vllt hilft dir das weiter.

schau dir mal die sfml an. die ist einfacher, schneller und du brauchst nicht hundert zusätzliche libs und erweiterungen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

4

09.08.2010, 22:09

Ja das geht in der Tat mit der SDL, auch wenn es mit der SFML um einiges komfortabler machbar ist.

Für die SDL:

C-/C++-Quelltext

1
2
// Alpha Wert setzen
SDL_SetAlpha(PointerOnSurface, SDL_SRCALPHA, static_cast<Uint8> (AlphaValue));


Bitte beachte, dass der AlphaWert 128 bei der SDL ein Sonderfall und somit speziell optimiert ist, d.h. schneller als anderer Werte.

Quelle: SDL Dokumentation


Gruß
SaRu_

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

09.08.2010, 22:47

SDL kann so weit ich weiß nur Color-Keying, also ein Pixel ist entweder 100% transparent oder 100% opak. -> wie GIF Format.
SFML kann auch Pixel, die zu 10, 20, ... 56, 57 ... 99% transparent sind -> wie PNG Format.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

09.08.2010, 23:37

SDL kann so weit ich weiß nur Color-Keying, also ein Pixel ist entweder 100% transparent oder 100% opak.
Da verweise ich nur auf meinen vorherigen Post.
Mit der SDL kann man (ohne eventuelle Erweiterungen) zwar keine Grafiken im PNG Format laden. Aber man kann für die gesamte Grafik einen Alpha Wert setzen zwischen 0 (komplett transparent) und 255 (komplett sichtbar).

Gruß
SaRu_

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

10.08.2010, 10:52

Das ist ja aber was ganz anderes, SaRu, als das was ich meinte.
Du beziehst dich auf einen einzelnen Alpha-Wert, der für das gesamte Bild gilt.
Ich bezog mich auf einen unabhängigen Alpha-Wert pro Pixel.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (10.08.2010, 10:57)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

10.08.2010, 13:31

Was das color keying angeht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SDL_Surface * set_colorkey(SDL_Surface * surface, int r, int g, int b) {
    int color = SDL_MapRGB(surface->format, r, g, b);
    
    SDL_SetColorKey(
        surface,
        SDL_SRCCOLORKEY,
        color
    );

    return surface;
}
//---
SDL_Surface * image = IMG_Load("bild.png");
image = set_colorkey(image, 255, 0, 255);
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

10.08.2010, 13:34

der rückgabewert der funktion ein bisschen ist überflüssig.^^
das beantwortet aber auch nicht seine frage.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

10

10.08.2010, 13:45

der rückgabewert der funktion ein bisschen ist überflüssig.^^
das beantwortet aber auch nicht seine frage.

Dein Satzbau ist komisch^^
Und kann sein, hab's nur flüchtig runter geschrieben, wie gesagt, lange kein C++ mehr gemacht ;) Der Rest dürfte aber soweit stimmen.
Und was die Antwort angeht, weswegen nicht mit colorkeys arbeiten?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige