Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Eine Echtzeit-3D-API wie OpenGL ist im Endeffekt nur durch die zugrundeliegende Hardware beschränkt. Moderne Grafikkarten (das verschiebt sich von Generation zu Generation) sind üblicherweise Füllraten- bzw. Dreieckslimitiert. Und da eine Kugel im Normalfall aus recht vielen Dreiecken besteht, würde eine komplette Voxellandschaft aus Kugeln (sofern diese rund aussehen sollen) ziemlich viele Dreiecke produzieren. Daher solltest du Kugeln nur dann verwenden, wenn deine Zielplattform recht modern ist. Neuere Karten (die High-End-Varianten, also Radeon9700> und GeForceFX5800>) sind in der Lage an die 200 Millionen Dreiecke pro Sekunde zu rendern. Allerdings hängt das stark davon ab wie es gemacht wird. Solche hohen Zahlen erreicht man im Normalfall nur wenn man wenige Materialwechsel macht, auf Beleuchtung verzichtet, die Daten unverändert im VRAM liegen und man auf Shader verzichtet.
Also alles eine Frage deiner Zielplattform bzw. Anforderungen. Ich persönlich würde für einen Voxelrenderer keine Kugeln verwenden. Alternativ könnte man auf modernen Grafikkarten übrigens noch zu 3D-Texturen greifen um Voxel zu simulieren, allerdings ist das eher suboptimal.
Ich besitze einen Pentium 4 3.0 GHz mit Ati Radeon 9800XL,
Also schon recht modern.
Nun, mir ist klar dass ich keine 6DOF 3d Voxelengine mit perspective nur mit voxelplatzhaltern in opengl erstellen kann, da müsste ich mir schon was besseres einfallen lassen, bei landschaften funktioniert diese Polygonisierungsmethoden ja auch recht gut.
Ich dagegen will eine Isometrie Voxel Engine verwirklichen wobei jedes objekt aus Voxeln besteht, ...also immer die gleiche Anzahl von Voxeln pro Frame, was eigtl. schneller zu rendern sein müsste, als eine sehr lang in die ferne ausgedehnte landschaft.
Ich denke ich werde das mal testen müssen...
P.S. achja sorry, dass ich das im falschen Forum gefragt habe.
Stimmt, der "marching Cubes" Algorithmus ist auch so eine Art Voxeldarstellung.
@Kugeln:
Die 2D Projektion einer Kugel (also auf dem Bildschirm sichtbar) ist ein Kreis - und einen Kreis kannst du mit einem einzigen Aufruf von glVertex3f darstellen (automatisch in Abhängigkeit vom Z-Wert richtig skaliert - und schön rund), wenn du eine moderne Grafikkarte mit einer ordentlichen Unterstützung von GL_ARB_point_parameters und hast - noch schneller geht's wahrscheinlich gar nicht, da du zum Senden der Vertexdaten auch VBOs verwenden kannst - und schon auf der Riva ZX (dem Vorläufer der TNT) konnte man damit beeindruckende Demos schreiben - wäre interessant, was dabei herauskommt, wenn man damit ein komplettes Voxelsystem implementiert.
Ich bin gerade dabei ein im hintergrund laufendes voxelsystem zu programmieren, mit modifizierfunktionen, voxelobjekten etc.
ich werde vorläufig vermutlich erst einmal GLScene verwenden, da ich mich da um einiges nicht kümmern muss. Wenn es darunter läuft, also die Funktionsfähigkeit meiner vorgeschalteten Voxelverarbeitung erwiesen ist, werde ich mich wieder dem puren openGL widmen,
ich halte euch auf dem laufenen.
Mitglieder in diesem Forum: Google [Bot] und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.