Hallo, folgende Problematik:
Hintergrund:
Ich bin Student und belege das Modul Computergrafik und versuche derzeit mit Java eine kleine 3D-Grafikbibliothek zu programmieren in dem ich die Konzepte der Computergrafik nachprogrammiere (zB. Clipping, Culling, Kameraperspektiven, zBuffer).
Früher habe ich ohne zBuffer gearbeitet, nun möchte ich einen zbuffer realisieren. Also erzeuge ich ein BufferedImage und erweiteres das ganze um ein Float-Array um den Z-Wert abzuspeichern und zu vergleichen. Ich ermittle als erstes den Dreieckstyp (wo sind die Ecken) und ermittle dan per Schleife jeden Pixel des Dreiecks und setze (sofern der zWert kleiner ist) den Pixel mit setPixel. Wenn das ganze fertig ist gebe ich alles mit drawImage wieder aus.
Leider dauert das ganze viel zu lange!!! Ich habe mit System.nanoTime() die Laufzeiten gemessen. Mit fillPolygon braucht das zeichen bei mir 0.036 Millisekunden, mit dem selbstberechnen benötige ich 15 Millisekunden das ist die 400fache Zeit!
Wie bekomme ich das schneller hin? Hat irgendjemanden einen effektiven Algorithmus zum Dreiecks(Pixel) berechnen?
Hintergrund:
Ich bin Student und belege das Modul Computergrafik und versuche derzeit mit Java eine kleine 3D-Grafikbibliothek zu programmieren in dem ich die Konzepte der Computergrafik nachprogrammiere (zB. Clipping, Culling, Kameraperspektiven, zBuffer).
Früher habe ich ohne zBuffer gearbeitet, nun möchte ich einen zbuffer realisieren. Also erzeuge ich ein BufferedImage und erweiteres das ganze um ein Float-Array um den Z-Wert abzuspeichern und zu vergleichen. Ich ermittle als erstes den Dreieckstyp (wo sind die Ecken) und ermittle dan per Schleife jeden Pixel des Dreiecks und setze (sofern der zWert kleiner ist) den Pixel mit setPixel. Wenn das ganze fertig ist gebe ich alles mit drawImage wieder aus.
Leider dauert das ganze viel zu lange!!! Ich habe mit System.nanoTime() die Laufzeiten gemessen. Mit fillPolygon braucht das zeichen bei mir 0.036 Millisekunden, mit dem selbstberechnen benötige ich 15 Millisekunden das ist die 400fache Zeit!
Wie bekomme ich das schneller hin? Hat irgendjemanden einen effektiven Algorithmus zum Dreiecks(Pixel) berechnen?