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

08.08.2005, 22:27

Transparente Texturen auf Flächen

Hallo,
ich möchte eine transparente Textur auf eine Fläche (ein paar Vertizes) legen. Die Fläche habe ich in AC3D erstellt und eine vorher erstellte Textur im TARGA-Format darüber gelegt. Die transparenten Bereiche habe ich vorher als Aplha-Kanal definiert. Wenn ich die Textur in AC3D lade, wird alles so angezeigt wie ich es möchte.
Konvertiere ich nun das exportierte 3ds-Modell mit dem ModelConverter erhalte ich die folgende Ausgabe:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Dieser Effekt wurde automatisch vom TriBase-Tool ModelConverter generiert.
// Hinweis: um einen Tabulator einzufügen, drücken Sie <Strg+Tab>!

DWORD   NumTextures         = 1;
STRING  Texture1Filename    = "truck.tga";
DWORD   Texture1Type        = 1; // 1: 2D-Textur; 2: Würfel; 3: Volumen
DWORD   Texture1ColorKey    = 0x00000000;
TEXTURE Texture1;

TECHNIQUE T1
{
    PASS P1
    {
        Texture[0]          = <Texture1>;

        // Es scheint keine Opazitätstextur zu geben!
        // Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!
        AlphaOp[0]          = SelectArg2;
        AlphaArg1[0]        = Texture;
        AlphaArg2[0]        = Current;

        // Materialeinstellungen
        MaterialDiffuse     = {0.933f, 0.502f, 0.933f, 1.000f};
        MaterialAmbient     = {0.200f, 0.200f, 0.200f, 0.000f};
        MaterialEmissive    = {0.000f, 0.000f, 0.000f, 0.000f};
        MaterialSpecular    = {0.000f, 0.000f, 0.000f, 0.000f};
        MaterialPower       = 8.000f;

        AlphaBlendEnable    = True;
        SrcBlend            = SrcAlpha;
        DestBlend           = InvSrcAlpha;
        ZWriteEnable        = False;
    }
}


Nun lade ich das Model mit der Tribase-Engine und rendere es zum Schluss in der folgenden Form:

C-/C++-Quelltext

1
2
3
4
5
D3D->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    
pC->getModel("2dtruck")->Render();

D3D->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);


Ich habe schon alle möglichen RenderState-Kombinationen die ich im Formum bei ähnlichen Problemen gefunden habe durchprobiert. Leider ohne Erfolg!! Die Fläche über dem Alpha-Kanal bleibt immer weiß und nicht transparent. ???

Was mache ich Falsch?

Vielen Dank für Eure Hilfe!!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

14.08.2005, 13:08

versuchs mal mit

Quellcode

1
AlphaOp[0]         = SelectArg1;

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

14.08.2005, 14:47

Re: Transparente Texturen auf Flächen

Zitat von »"denis"«

Quellcode

1
2
        // Es scheint keine Opazitätstextur zu geben!
        // Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!

Ausprobiert?

Werbeanzeige