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

06.09.2010, 09:27

DepthTest Manuell durchführen...wie?!

So..
gehen wir zuersteinmal davon aus ich hab einen an der Waffel(für den fall dass es einigen bei folgendem so vorkommt)

Danach folgt folgende problemstellung:

In Delphi kann ich 3d objekte Als gittermodel anzeigen drhen etc.
Gehen wir davon aus ich habe eine FAce bereits in die VIew übersetzt, wie kann ich dann manuell den depthtest machen?
Wie ein Depthbuffer aufgebaut ist und was er ist weiß ich, aber ich müsste wissen, wie ich die tiefe für die einzelnen PIxel eines Faces berechnen kann.

Ich will nur auf Canvas und GDI zurückgreifen für die spätere Zeichnung.(GDI wird ja eigentlich in den CAnvas objekten gewrapped, habe aber keine ahnung obs bei den zeichenoperationen dadurch nen signifikanten speedverlustgibt). Also hierfur kein Opengl, kein DX oder sontige erweiterungen. Nur Delphi 2010 Architekt.(nur für den fall: Bin auf der firma ;) )

Die performance lassen wir mal ausser acht, ist halt mal was zum lernen :).
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

06.09.2010, 10:09

Wie genau stellst du dir das vor? Wie genau rasterisierst du die Dreiecke? Zeichnest du einfach nur Linien zwischen den projizierten Vertices? Die Tiefe musst du eben beim Rasterisieren entsprechend interpolieren.

3

06.09.2010, 12:24

Genau,
Das Interpolieren ist der KasusKnacktus.

Ich zeichne die Linien über die Transformierten Vectoren.

Jetzt müsste ich eigentlich(das ich ja für jede ecke des dreiecks einer Face die Koordinaten habe), den rest interpolieren können.
Bin nur noch nicht auf was hilfreiches gestossen, vonwegen der interpolation :|
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

06.09.2010, 13:59

Vielen dank,

aber irgendwie blicke ich bei der Notation von dem nicht ganz durch.

Wo bitte wird b bestimmt?
b ist ein scalar...und weiter?

Ich weiß, das ich rausfinden muss, wo mein punkt zwischen dem höchsten und nidrigsten Zwert der plane liegt um einen Skalarwert zu berechnen, mit dem ich dann den ZWert interpolieren kann.
Aber die Seiten im Buch helfen mir nur sehr schwerlich weiter.
Es mag richtig sein, aber es ist mir zu Synonymisiert.

Ich blicke da nicht ganz durch.
Kann mir jemand helfen das zu entdröseln?

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

06.09.2010, 14:16

Der Wert von b ist für die Lösung irrelevant. Das Ganze ist nur eine Herleitung die zeigt dass du den Kehrwert der z Koordinate über das Dreieck linear interpolieren kannst. D.h. du interpolierst nicht z sondern 1/z linear über dein Dreieck. Um dann die z-Koordinate zu bekommen bestimmst du wiederum den Kehrwert des interpolierten Kehrwerts an der entsprechenden Stelle.

7

06.09.2010, 14:48

Aha, ok.

Nehmen wir mal folgendes Beispielszenario:
Rote Schrift X/y
Grüne Schrift Z (1 vorne 0.5 hinten)

(Link)



Jetzt würde ich zwischen dem vorderen und dem hinteren Zwert interpolieren, soweit so gut.
Aber ich schnalle nicht wie ich die interpolation anhand der position innerhalb des Dreiecks berechne, unter berücksichtugung der 3 eckpunkte.


MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

9

08.09.2010, 10:01

Vielen dank :)
Das ist sehr interressant.
NOch eine Frage zum Rasterisieren:

Wird das eher so durchgeführt(linien in einem stück):

(Link)




oder so(es wird immer eine seite gemacht):


(Link)



Wenn ich es richtig verstanden habe, wir ddie erste methode benutzt, richtig?

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

08.09.2010, 18:04

Wenn ich es richtig verstanden habe, wir ddie erste methode benutzt, richtig?


Im Allgemeinen ja. Aus Interesse: wie kommst du denn auf die zweite und was für Vorteile siehst du darin?
@D13_Dreinig

Werbeanzeige