Re: D3D: Qberschneidende_Grafiken?=
From: Peter Racz (pracz_at_aprNOSPAM.fta-berlin.de)
Date: 04/06/04
- Next message: Marco Boltz: "Open Source MP4 Splitter und Decoder"
- Previous message: Christoph Redl: "Re: D3D: Überschneidende Grafiken"
- In reply to: Christoph Redl: "Re: D3D: Überschneidende Grafiken"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 06 Apr 2004 17:10:08 +0200
Christoph Redl wrote:
> Hallo!
>
> Also das mit dem immer von hinten nach vorne rendern ist
> ziemlich schwierig, da ich die Szene von allen möglichen
> Seiten (also freie Rotation) anschauen können will.
> Auszurechnen welches Objekt im Moment vorne liegt ist da
> ziemlich schwierig.
Ja, das ist das übliche Problem(chen). Du mußt die Quadrate nach
Kameraanstand sortieren, oder gleich so drehen, daß die
Überdeckung-Reihenfolge-Spiel stimmt. Schwierig ist das nicht, das
problem ist eher das, daß bei es bei sehr vielen Objekten zu lange
dauert. Bei korrekter Transparenz führt an dem Sortieren kein Weg
vorbei. Es gibt zwar komplizierte Algorithmen, die mehr oder weniger
ohne Sortierung auskommen, sie sind aber wirklich kompliziert, mit Pixel
Shadern, etc. und sie sind nicht vollkommen fehlerfrei.
>
> Außerdem: Was meinst du mit "mache richtige
> Transparenz mit Alpha Kanal in der Textur und Alpha
> Blending". Also ich habe im Moment ein Bitmap eingeladen,
> wo die Bereiche schwarz sind, die nicht sichtbar sein
> sollen. Daher habe ich als ColorKey schwarz eingestellt,
> und vor dem Rendern aktiviere ich AlphaBlending. Dadurch
> sind die schwarzen Bereiche ganz durchsichtig, und der
> Rest eben so halb. Mit Alphakanal direkt in der Textur
> habe ich noch keine Erfahrung. Wie geht denn das?
>
Eine Textur mit Alpha hat neben R, G und B einen vierten Kanal, der
heißt Alpha. Sie gibt die Maß der Transparenz an. (z.B. ganz schwarz ist
durchsichtig, ganz weiß ist undurchsichtig) Mit dem directX-Texture-Tool
und mit einem beliebigen Photo-Editor (ich benutze Corel Photo Paint)
kannst du leicht einen Alpha Kanal zu einem bestehenden Textur
erstellen, auch so, daß das, was schwarz war, zu Alpha wird. Du
erstellst im Prinzip ein schwarzweißes Bild, die Du mit dem Textur-Tool
als Alpha einlesen kannst. Die Textur kann dann nicht mehr als .bmp
gespeichert werden, sondern z.B. als .dds, das ist aber egal. Alle
DirctX Texturfunktionen können mit dds umgehen.
Bei der Alpha Blending (er heißt ja Alpha Blending, weil es den Alpha
Kanal benutzt), kannst Du die Renderstates dann so setzen, wie Du
brauchst, schau den Tutorialbespiel an. Das Prinzip ist sehr einfach,
der Alphawert des Pixels bestimmt beim Rendern wieviel vom bereits
vorhandenen Pixel im Bild und wieviel von der gerendernten Textur
genommen werden. 0% Bild und 100% Textur bedeuten keinen Transparenz,
100% Bild und 0% Textur ist völlige Transparenz. Dazwischen sind
natürlich alle 255 Werte möglich.
Colorkeying ist eine Alternative zu Alphablending, die Doku rät jedoch
von ihm ab, als obsolet.
Gruß
Peter
- Next message: Marco Boltz: "Open Source MP4 Splitter und Decoder"
- Previous message: Christoph Redl: "Re: D3D: Überschneidende Grafiken"
- In reply to: Christoph Redl: "Re: D3D: Überschneidende Grafiken"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|