Z Buffer / Depth Buffer in Bufferstrategy einfügen

G

Goldenprime

Mitglied
Ich programmiere gerade mein erste 3d Engine und bin über das Problem gestolpert, dass man beim Rendern irgendeine Möglichkeit braucht zu ermitteln, welche Objekte zuerst und welche zuletzt gezeichnet werden sollen. Nach einer kurzen google suche habe ich herausgefunden, dass der beste weg das umzusetzen wohl ein Z Buffer oder Depth Buffer sein soll, wie der genau funktioniert habe ich zwar verstanden, aber ich kann ihn nicht implementieren, da ich zu nicht weis, weche funktionen ich dafür überschreiben müsste. In meinen Programm benutze ich eine Bufferstrategy und java.awt.Graphics um darauf zu zeichnen. Um die Den ZBuffer einzubauen, müsste ich die Graphics.fillPolygon() methode so bearbeiten, das sie ein Pixel der Bufferstrategy nur dann Einfärbt, wenn der ZBuffer das auch zulässt. Optional währe es auch super, wenn mir jemand sagen könnte, wie man so einen ZBuffer mit Hardwareunterstützung erstellet. Danke im Vorraus für Antworten.
 
Beste Antwort
H
Einen Z/Depth Buffer gibt es in Java2D, respektive AWT/Swing nicht, da die Zeichenoperationen und Primitive rein 2D sind.
Wenn du Hardwarebeschleunigung (also Grafikkarte) für die Rasterisierung von 3D Primitiven mit Depth-Buffer haben willst, dann wirst du nicht über die Nutzung einer Grafikschnittstelle für hardwarebeschleunigtes Rendern wie etwa OpenGL, Direct3D, Vulkan, Mental, Metal, etc. herumkommen. Hierfür gibt es entsprechende Java-Binding-Libraries, um aus Java heraus diese nativen Schnittstellen nutzen zu können.
Dir steht natürlich auch offen, einfach fertige 3D Engines zu nutzen, wie etwa JMonkeyEngine, oder aber auch als Lernübung einen eigenen (Software-)Rasterizer zu schreiben.
H

httpdigest

Top Contributor
Einen Z/Depth Buffer gibt es in Java2D, respektive AWT/Swing nicht, da die Zeichenoperationen und Primitive rein 2D sind.
Wenn du Hardwarebeschleunigung (also Grafikkarte) für die Rasterisierung von 3D Primitiven mit Depth-Buffer haben willst, dann wirst du nicht über die Nutzung einer Grafikschnittstelle für hardwarebeschleunigtes Rendern wie etwa OpenGL, Direct3D, Vulkan, Mental, Metal, etc. herumkommen. Hierfür gibt es entsprechende Java-Binding-Libraries, um aus Java heraus diese nativen Schnittstellen nutzen zu können.
Dir steht natürlich auch offen, einfach fertige 3D Engines zu nutzen, wie etwa JMonkeyEngine, oder aber auch als Lernübung einen eigenen (Software-)Rasterizer zu schreiben.
 
Beste Antwort
Ähnliche Java Themen

Ähnliche Java Themen

Anzeige

Neue Themen


Oben