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

29.12.2007, 16:58

tb2DSprite

Hi,

ich habe ein Problem bei der Verwendung der TriBase-Erweiterung tb2DSprite.
Ich Render mein Level schon erfolgreich.
Dazu rufe ich einfach für jedes Feld meines Levels nacheinander

Quellcode

1
2
3
_pSpriteGrass2->Begin();
                    m_pSpriteGrass2->DrawSprite(tbVector2((x*65.0f), (y*65.0f)), 0, TB_SF_ALIGN_HLEFT | TB_SF_ALIGN_VTOP, tbColor(1.0f, 1.0f, 1.0f, 0.5f)); 
                    m_pSpriteGrass2->End();
auf.

Nun will ich an der Position wo der Player steht erst den Hintergrund rendern, und dann den Player:

Quellcode

1
2
3
4
5
6
7
                m_pSpriteGrass2->Begin();
                    m_pSpriteGrass2->DrawSprite(tbVector2((x*65.0f), (y*65.0f)), 0, TB_SF_ALIGN_HLEFT | TB_SF_ALIGN_VTOP, tbColor(1.0f, 1.0f, 1.0f, 0.5f)); 
                    m_pSpriteGrass2->End();
                    m_pSpritePlayer->Begin();
                    m_pSpritePlayer->DrawSprite(tbVector2((x*65.0f), (y*65.0f)), 0, TB_SF_ALIGN_HLEFT | TB_SF_ALIGN_VTOP, tbColor(1.0f, 1.0f, 1.0f, 0.5f)); 
                    m_pSpritePlayer->End();
    

Das funktioniert aber nicht, es wird das Playerbild und das Hintergrundbild addiert.
Ich kenne mich noch nicht so gut aus in der Grafik-Programmierung, kann mir jemand sagen wie ich das anstellen kann das erst der Hintergrund gerendert wird, und dann der Player (mit transparentem Hintergrund).

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

2

29.12.2007, 18:49

Ich kenne diese Erweiterung zwar noch nicht, aber wenn ich richtig vermute ist der 2. Parameter das, was in 3D die Tiefenachse(RHW Grafik - Werte zwischen 0 und 1) wäre - setze in doch mal beim Hintergrund auf 1, dann müsste er hinter dem Player gerendert werden.

Zur Transparenz - die regelt nicht den entgültigen Farbanteil, sondern wird für die Interpolation von alter und neuer Pixelfarbe hergenommen - angenommen du setzt den Bildbuffer zu Beginn auf Schwarz wird dein Hintergrund zuerst mit schwarz interpoliert(also abgedunkelt) und dann der Player mit dem Ergebnis interpoliert, render ihn also nicht transparent.

Muss aber nicht stimmen, also keine Gewähr ;)
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

3

31.12.2007, 13:45

Vielen Dank für deine Antwort.
Aber ich bin noch zu keiner Lösung gekommen.
Wenn ich beides auf 0 setzte wird der Spieler ohne Hintergrund gerendert.
Hintergrund 0 Spieler 1 = Hintergrund Sichtbar
Hintergrund 1 Spieler 0 = Spieler Sichtbar
Hintergrund 0 Spieler 0 = Spieler Sichtbar
Hintergrund 1 Spieler 1 = Schwarzes Feld

4

31.12.2007, 14:44

Hmm ... also ist das nicht ein float-Wert? Normal sollten die Werte zwischen 0 und 1 liegen und den Bereich auf der z-Achse representieren.
Kenn allerdings die Erweiterung jetzt auch nicht und bin mir d.h. nicht ganz sicher. Denke aber mal das die ID3DXSprite kapselt.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige