Autor Beitrag
Sternkuccker
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 17.11.09 21:05 
Liebe Forenmitglieder,
ich habe ein Programm geschrieben, das in einer bestimmten Reihenfolge Sterne im Weltraum einfärbt. Das Programm selbst läuft gut, gibt die Daten aber bisher nur in Texform aus. Ich möchte das Ergebnis nun visualisieren, doch an dieser Stelle hören meine Delphi-Kenntnisse leider auf, da ich so etwas noch nicht gemacht habe.
Es handelt sich um einige tausend Punkte, für die jeweils x1, x2 und x3 Koordinaten vorliegen sowie ein Farbwert. Im Zeitablauf der Simulation (ca. 1 Minute) soll dieses Geschehen visualisiert werden.
Ideale Lösung wäre, ein Fenster zu haben, das man mit der Maus in allen 3 Achsen drehen kann, um einen Eindruck vom 3D-Geschehen zu bekommen. Darin sieht man dann die farbigen Sterne, die im Zeitablauf ihre Farbe ändern.
Wie gestaltet man sowas? Muss ich dafür tief in die Grafikprogrammierung einsteigen? Gibt es fertige Templates? Ich weiß z.B., dass einige Spiele-Engines als Open Source veröffentlicht wurden. Andererseits stelle ich mir mein Anliegen als sehr "basic" vor im Vergleich zu heutigen Spielen, sodass eine einfachere Lösung nahe liegt.

Ich bin dankbar für jeden Rat!
Freundliche Grüße
Michael
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: Mi 18.11.09 09:39 
Du könntest mit einer PaintBox arbeiten aber erfahrungsgemäß ist das selbst für so einfache Animationen zu langsam.
Deshalb müsstest du schon mit DirectX oder OpenGL arbeiten - der größte Nachteil dabei ist, dass man teilweise von der Hardware abhängig ist, OpenGL soll nicht mehr auf Vista und Windows 7 laufen, DirectX geht nicht auf Linux...

Ich habe grafisch nur mit DirectX gearbeitet. Du kannst dir ja mal meinen Bildschirmschoner angucken, das geht auch in deine Richtung www.mitjastachowiak....?/Projects/Starfield
In der SimulatorFenster.pas steht der relevante Quelltext, in der procedure PEinblenden findest du zum Beispiel ein Paar Render-Einstellungen, die für dein Vorhaben nützlich sein können - wenn du schon etwas DirectX kannst. Auf www.delphidev.de/forum/viewforum.php?id=14 findest du DX-Header für Delphi und vermutlich auch ein Paar Einsteiger-Tutorials.

Wenn man's einmal verstanden hat, ist es eigentlich nicht schwer aber für den Einstieg braucht man schon etwas Geduld.


Zuletzt bearbeitet von Gewuerzgurke am Di 01.12.09 15:18, insgesamt 1-mal bearbeitet
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 18.11.09 10:42 
user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
Du könntest mit einer PaintBox arbeiten aber erfahrungsgemäß ist das selbst für so einfache Animationen zu langsam.

Das ist eher nicht das Problem... aber man müsste die Projektion selber berechnen. Sinnloser Aufwand und so.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
der größte Nachteil dabei ist, dass man teilweise von der Hardware abhängig ist

Bei so einfachen Sachen eher nicht. Mit OpenGL dürftest du den gleichen (zumindest Grafik)Code auf allem vom Smartphone bis Workstation ans laufen kriegen. Mit DirectX nicht, das ist klar.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
OpenGL soll nicht mehr auf Vista und Windows 7 laufen

Das ist Quatsch und wäre wirtschaftlicher Selbstmord für MS.

user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn man's einmal verstanden hat, ist es eigentlich nicht schwer aber für den Einstieg braucht man schon etwas Geduld.

Ich fand OpenGL einfach zu lernen, erst recht mit den wunderbaren Tutorials und Headern von DelphiGL.

EDIT: noch was zum Thema.

Was du hier willst ist (als Stichworte) glBegin(GL_POINTS), glVertex3f und glColor3f; wegen der Punktmenge mindestens als DisplayList, ggf. direkt als VBO(Vertex Buffer Object) geladen. User-Interaction bzgl. Drehen, Zoomen etc. kann man mehr oder weniger aus den diversen Tutorials auf DGL raubkopieren ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: Mi 18.11.09 20:34 
Zitat:

>>OpenGL soll nicht mehr auf Vista und Windows 7 laufen

>Das ist Quatsch und wäre wirtschaftlicher Selbstmord für MS.

Dachte ich auch aber ich bin mir sehr sicher gehörtzuhaben, dass Hardwarebeschleunigung mit OpenGL auf Vista und Win7 sehr eingeschränkt ist :nixweiss:
Das währe dann vielleicht der Grund warum Creative für OpenAL auf Vista eine extra Anwendung braucht, die den CPU in die Höhe treibt :D - egal, das ist eine andere Geschichte.

Für dein Vorhaben, würde ich mich wohl tatsächlich an GL - Wollte ich auch schon längst gelernt haben - halten; damit bist du unabhängiger. DirectX macht nur für "komplexe Hochperformance-Anwendungen" auf Windows Sinn.
Sternkuccker Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 19.11.09 11:39 
Danke schonmal an alle! Ihr habt mir wohl einige richtige Stichworte genannt. Ich werde es in OpenGL realisieren. Programmiere momentan mit Lazarus und habe ein erstes Tutorial mit GLUT am Laufen. Jetzt heißt es wohl erstmal lesen und lernen...