Tipp 0399 Textur-Blending (einfach)
Autor/Einsender:
Datum:
  Alexander Csadek
12.06.2004
Entwicklungsumgebung:
DirectX-Version:
  VB 6
DirectX 7
Transparenzeffekte können in Direct3D durch das Mischen von Texturen erzeugt werden. Dabei wird ein Farb-Pixel aus der Textur mit einem Farb-Pixel aus dem Szenen-Hintergrund gemischt, und ist nicht mit transparenten Farben in einer Textur zu verwechseln.
Entscheidend ist dabei der Blend-Faktor mit der die beiden Farben gemischt werden. Beide Faktoren werden dem Direct3D mittels der Funktion SetRenderState() mitgeteilt.
Der Textur-Blend-Faktor wird folgendermaßen eingestellt:
Device.SetRenderState D3DRENDERSTATE_SRCBLEND, D3DBLEND_ONE
Der Hintergrund-Blend-Faktor so:
Device.SetRenderState D3DRENDERSTATE_DESTBLEND, D3DBLEND_ONE
Und ein Transparenz-Effekt wird wie folgt erzeugt:
Device.SetRenderState D3DRENDERSTATE_ALPHABLENDENABLE, True
Und nicht vergessen das Alpha-Blending auch wieder auszuschalten, damit nicht die gesamte 3D-Szene transparent wird.
Es folgt nun der für diesen Tipp relevante Code...
 
Public Sub Render3D()

  Device.Clear 1, ClearRec(), _
        D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, _
        DX7.CreateColorRGBA(0.04, 0.04, 0.07, 1), 1, 0
  Device.BeginScene

  'Textur-Blending ausschalten, da die folgenden
  'Texturen normal gerendert werden sollen
  Call Device.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, False
  Call Device.SetTexture(0, texSky)
  Call Device.DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, _
        vxSky(0), UBound(vxSky()) + 1, D3DDP_WAIT)
  Call Device.SetTexture(0, texHorizont)
  Call Device.DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, _
        vxHorizont(0), UBound(vxHorizont()) + 1, D3DDP_WAIT)
  Call Device.SetTexture(0, texFloor)
  Call Device.DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, _
        vxBoden(0), UBound(vxBoden()) + 1, D3DDP_WAIT)
  Call Device.SetTexture(0, texBrickWall)

  'Textur-Blending aktivieren, da die folgende
  'Textur mit Textur-Blending gerendert werden soll
  Call Device.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, True)
  Call Device.SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_ONE)
  Call Device.SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_ONE)
  Call Device.DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, _
        vxWand(0), UBound(vxWand()) + 1, D3DDP_WAIT)

  Device.EndScene
End Sub
 
Weitere Links zum Thema
Textur-Animation
Texturen mit transparenter Farbe (ColorKey)
Hinweis
Um dieses Beispiel ausführen zu können, wird die DirectX 7 for Visual Basic Type Library benötigt (siehe dazu die Erläuterungen in der DirectX-Rubrik).

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (258 kB) Downloads bisher: [ 852 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 30. August 2011