Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Problem mit DirectX Darstellung (https://www.delphipraxis.net/71672-problem-mit-directx-darstellung.html)

atreju2oo0 19. Jun 2006 12:51


Problem mit DirectX Darstellung
 
Liste der Anhänge anzeigen (Anzahl: 4)
Guten Tag...

Ich habe auf Arbeit einen 3D-Laser Scanner von dem ich eine Punktmenge erhalte. Diese Punktmenge
interpoliere ich und mache daraus eine richtige 3D-Struktur mithilfe einer Heightmap. Diese lasse ich wiederum mithilfe von DirectX 8 darstellen.
Dabei treten aber leider (in meinen Augen) Fehler auf die ich trotz intensiver Suche nicht lokaliesieren kann. Ich nehme an das es an der initialisierung liegt aber hab keinen Plan wo.
In den Bildern ist es hoffentlich klar zu erkennen: a) Die Höheninformationen werden scheinbar durchsichtig und es entstehen Streifen...


Mal zu den Fakten:
es sind 200*100 Vierecke die dargestellt werden, also 40000 Dreiecke. Das macht dann zusammen 120000
Vektoren. Das dürfte doch nicht zuviel sein, oder? Zumal eigentlich die Drehungen und Verschiebungen alle problemlos laufen und keine Ruckler ergeben...


Meine Init-Werte:

With D3DPP
.BackBufferCount = 1
.EnableAutoDepthStencil = 0
.SwapEffect = D3DSWAPEFFECT_FLIP
.BackBufferFormat = DispMode.Format
.AutoDepthStencilFormat = D3DFMT_D16
.EnableAutoDepthStencil = 1

D3DDevice.SetRenderState D3DRS_ZENABLE, 1
D3DDevice.SetRenderState D3DRS_LIGHTING, 0
D3DDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_SOLID
D3DDevice.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE


Wer sich hier wundert: Das ist leider Visual Basic6 QT ... Hab hier nix anderes und finde kein kompetentes VB-Forum. Ausserdem ist es IMHO eh ein Fehler der DirectX-Init Funktion...

Nun nochmal nen paar Screens die mein Problem erklären sollten...

Ich danke schonmal für die Hilfe...
P.S.: Ich würde auch das ganze Prog ranhängen aber es läuft nur mit ner 4MB großen Datei in der
die 3D-Daten gespeichert sind...

DGL-luke 19. Jun 2006 12:55

Re: Problem mit DirectX Darstellung
 
Kann es sein dass dein Tiefentest (DX sollte sowas ja haben *g*) nicht funktioniert / falsch eingestellt ist? Das culling ist schonmal aus, das kanns nicht sein ^^

atreju2oo0 19. Jun 2006 13:10

Re: Problem mit DirectX Darstellung
 
Ähm...
Ich musste mich neu in das Thema einarbeiten und weiß jetzt ehrlich gesagt nicht was Du meinst...
Hast Du nen Stichwort parat nach dem ich googln könnte?

DGL-luke 19. Jun 2006 13:19

Re: Problem mit DirectX Darstellung
 
Delphi, OpenGL:
Delphi-Quellcode:
glEnable(GL_DEPTHTEST);
glDepthFunc(GL_LEQUAL);
:mrgreen:

In VB, DX wirds wohl irgendwie so sein:

Code:
D3DDevice.SetRenderState D3DRS_DEPTHxxxxx, D3DDEPTH_xxxxx

atreju2oo0 19. Jun 2006 13:21

Re: Problem mit DirectX Darstellung
 
Vielen Dank...
Ich werd mal schauen obs daran lag...
;)

[edit]
Das wars leider nicht...
Soweit ich das jetzt recherchiert hab ist dafür

EnableAutoDepthStencil = 1

zuständig und richtig initialisiert...
Soll ich mal das Prog hochladen? Sind zwar 4 MB
aber dann kann man den Fehler mal live sehen?

Naja... zur Not muss ich es so lassen!

JasonDX 19. Jun 2006 17:42

Re: Problem mit DirectX Darstellung
 
Fuer den Z-Buffer (oder Tiefenbuffer) ist die Eigenschaft im Renderstate zustaendig:
Code:
D3DDevice.SetRenderState(D3DRS_ZENABLE, 1)
Was eine Ursache fuer den Fehler sein koennte waere, wenn du den Z-Buffer nicht saeuberst, sprich beim Clear-Aufruf das D3DCLEAR_ZBUFFER-Flag nicht mitgibst.
Wenn du die Render-Spezifischen Aufrufe posten koenntest, waere das zum Fehler finden sehr hilfreich ;)


btw:
Zitat:

Zitat von atreju2oo0
With D3DPP
.BackBufferCount = 1
.EnableAutoDepthStencil = 0
[...]
.EnableAutoDepthStencil = 1

:gruebel: :zwinker:

greetz
Mike


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz