Ich habe die Aufgabe, eine bestehende Applikation zu erweitern. Das Programm ist in C++ geschrieben und verwendet OpenGL für die Bearbeitung von grafischen Daten (Simulation für Wasserkraftwerke). Die Ausgabe der Grafiken ist z.Z. mit einem simplen Glut-Viewer gelöst. In Zukunft soll das gesamte User Interface durch Delphi abgelöst werden. Wie kann ich die bestehenden Grafikdaten (Glut-Stream) an Delphi zur Visualisierung übermitteln? Die komplexen Berechnungen und Simulationen sollen weiterhin als C++ Programm ablaufen - lediglich das GUI soll abgelöst werden. Hat jemand von euch Erfahrung in solchen oder ähnlichen Sachen? Oder einen guten Tip für die Vorgehensweise? Bin für jeden gut gemeinten Ratschlag dankbar.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich visualisiere Ergebnisse von Atomsimulationen mittels OpenGL. Bei mir werden Ergebnisfiles eingelesen und ausgegeben. Also die Ausgabe mit Delphi und OpenGl sollte kein Problem sein. Ob Glut oder nicht, die OpenGL-Befehle sind die selben. Einzig die Initialisierung ohne Glut ist anders. Wenn ihr eure Software Plattformunabhängig gestalten wollt, solltest du dich mal mit SDL beschäftigen. SDL übernimmt dann die Initialisierung und du kannst dann OpenGL Befehle über SDL anzeigen lassen.
Eigentlich also kein Problem. Aber wenn du uns genauer sagen kannst, wo zweifel oder Fragen an der Aufgabe sind, können wir dir sicherlich genauer Auskunft geben.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Danke für deinen Vorschlag. Wozu ist SDL gut? Das kenne ich nicht. Mein spontaner Ansatz ist, den von der Simulations-Applikation erstellten 'Offscreen Pixelspeicher' per Shared Memory an Delphi zu übergeben und dort mit OpenGL in ein einfaches Bitmap zu konvertieren und auf einer Form (z.B. TImage) darzustellen - völlig statisch. Das Ganze wird ca. alle Sekunden wiederholt, um die neuen Simulationsergebnisse zu visualisieren. Was mir nicht klar ist, ist ob die verwendeten OpenGL Zeichenbefehle direkt den Frame Buffer der Grafikkarte manipulieren oder einen Bildpuffer verwenden. Ich würde gerne an der Stelle im Code, wo das GLUT-Window refreshed wird, aufsetzen und den Bildpuffer Delphi übertragen. Der Aufwand, den bestehenden Code von C++ auf Delphi zu migrieren ist meines Erachtens nicht gerechtfertigt.
Benny
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Sorry. Hab den Thread irgendwie erst jetzt gesehen. Ich habe schon mal in einem Projekt gearbeitet welches einen C++ Server und ein Delphi Frontend hat (hatte).
Die Kommunikation lief über das Netztwerk und der Client hat zur Vereinfachung C++ DLL's benutzt. Diese haben die gesammte Kommunikation geregelt und haben dann entsprechend nur die Daten zurückgeliefert. Ist meines Erachtens auch das sinnvollste.
Was ich dann nicht machen würde ist ein Bild auf dem Server zu berechnen und nur dieses zum Client zu übertragen. Erst einmal ist ein Bild recht groß und es nimmt dir unglaublich viel an der Flexibilität, die du evtl zum Zeichnen etc bräuchtest. Ich würde lieber die Daten in einem entsprechenden Format übertragen, dass du recht viele Verarbeitungsmöglichkeiten hast. Was für Möglichkeiten und wie das Format aussehen soll können wir dir nicht sagen. Das musst du selber herraus finden. Du kennst dich mit dem Projekt ja aus. Wir nicht.
Wobei ich auch mal denke, dass diese Lösung ein wenig zu weit ausgeholt ist für deine Zwecke. Aber hier selbes Problem. Wir kennen dein Projekt nicht.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Glut hin oder her, die OpenGL Befehle hast du ja in deinem Glut Projekt schon. Da musst du dir also nix neues Überlegen. OpenGL sollte also bei der Umstellung keine Probleme machen.
Nur die Initialisierung eines Fensters z.B. wird anders gehandhabt. Dazu gibt es aber Tuts und ein fertiges OpenGL-Template hier. (Und in kürze eine Anleitung, wie man sich so ein Template anfangs auch selber bauen kann).
Ok zurück zu deiner Aufgabe: Du hast eine C++ Anwendung die Sachen berechnet. Dazu hast du momentan ein Teilprojekt in C++ welches diese Sachen mittels GLUT darstellt. Deine Aufgabe ist es das Teilprojekt durch eine Delphianwendung zu ersetzen.
Lösungsvorschlag: Deine Idee mit dem shared Memory ist Ok, wenn du dich damit auskennst. Nur sollte nicht der Framebuffer sondern die Basisdaten die du darstellen willst geshared werden. Es wäre weder praktisch noch ästhetisch keine gute Lösung 2 Pogrammteile quasi eine Aufgabe abarbeiten zu lassen. Das "Delphifrontend" sollte lieber gleich die gesammte OpenGL verwaltung managen. Dann ist wenigstens immer klar, welcher Programmteil gerade mit welcher API zusammenarbeitet.
zur SDL: Unser Wiki weiß zu berichten: SDL Ließ dir auch bei den Einsteigertutorials die Kurzeinführung in SDL durch. Da kannst du Blut lecken.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 23 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.