Ancalagon Geschrieben 16. Mai 2006 Teilen Geschrieben 16. Mai 2006 Also, ich habe einen Vektor mit n ganzzahligen Elementen vom Typ int, das sind schon die Anzahl der Einträge pro Histogrammspalte. Ich möchte daraus ein Histogramm erstellen. Jetzt kommen die Probleme: a.) Unter WindowsXP ohne Visual C++, nur mit reinem C++. b.) OpenGL macht zicken weil ich die Funktion void display(void) für jeden Schleifendurchlauf neu schreiben sollte, ich kann hier halt keine Werte übergeben, kann man das irgendwie umgehen? Oder habt ihr ne Idee wie man das anders realisieren könnte? Am Ende soll ein Histogramm dieser Art dabei herauskommen: http://www.astrum.ch/uni/statistik/images/histogramm.jpg (Das hat nichts mit meinem Programm zu tun!!) Ich verwende die glut-openGL-Bibliothek und den Borland Compiler. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Mai 2006 Teilen Geschrieben 16. Mai 2006 a.) Unter WindowsXP ohne Visual C++, nur mit reinem C++.Visual C++ ist eine Entwicklungsumgebung, C++ eine Sprache. Das kannst du so gar nicht gegenüberstellen. Was heißt hier "rein"? Nur Standard-C++? OpenGL steht nicht im Standard. b.) OpenGL macht zicken Geht's etwas genauer als "macht zicken"? weil ich die Funktion void display(void) für jeden Schleifendurchlauf neu schreiben sollte, ich kann hier halt keine Werte übergeben, kann man das irgendwie umgehen?Warum willst du das überhaupt tun? Willst du dein Diagramm animieren? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ancalagon Geschrieben 16. Mai 2006 Autor Teilen Geschrieben 16. Mai 2006 Visual C++ ist eine Entwicklungsumgebung, C++ eine Sprache. Das kannst du so gar nicht gegenüberstellen. Was heißt hier "rein"? Nur Standard-C++? OpenGL steht nicht im Standard. Geht's etwas genauer als "macht zicken"? Warum willst du das überhaupt tun? Willst du dein Diagramm animieren? Danke, Kritik ist zur Kenntnis genommen. Mit VC++ is es wesentlich einfacher eine Grafische Oberfläche zu erstellen weil die Bibliotheken schon mitgeliefert sind. Ja ich muss mich deutlicher ausdrücken: Ich schreib das in C++. basta. Okay also: Ganz prinzipiell lese ich unmengen an Daten aus, fortlaufend ohne das Programm zu unterbrechen. (D.h. die Daten die ich auslese werden in Dateien geschrieben die mein Programm auswertet). Diese Daten werden verarbeitet. Am Schluss des Prozesses möchte ich einen Datenpunkt pro verarbeiteter Datei in ein Histogramm gemalt haben. Nun die verarbeitung und das Berechnen eines Histogramms funktioniert wunderbar. Allerdings geht es mir um die Darstellung auf dem Bildschirm. Dazu öffne ich ein neues Fenster und stelle das Histogramm mit Open GL dar. Wenn ich nun aber einen neuen Datenpunkt habe heisst das ich muss den GL-code der für die Darstellung ist komplett neu formulieren...Das geht aber nicht so ohne weiteres, weil a.) mein Programm noch läuft und b.)ich dieser ,,display"-Funktion keine Werte übergeben kann. Im folgenden die Funktion die ich modifizieren will: void display(void) { glClear(GL_COLOR_BUFFER_BIT); //color glColor3f(1.0, 1.0, 1.0); // RGB, percent glEnable(GL_LINES); glEnable(GL_POLYGON); glLineWidth(1.0); //--arrows @ axes-- glBegin(GL_POLYGON); glVertex2f(16.0, 285.0); glVertex2f(24.0, 285.0); glVertex2f(20.0, 295.0); glEnd(); glBegin(GL_POLYGON); glVertex2f(385.0, 24.0); glVertex2f(385.0, 16.0); glVertex2f(395.0, 20.0); glEnd(); //--Border of Histogram-- glBegin(GL_LINES); glVertex2f(20.0, 20.0); glVertex2f(390.0, 20.0); glVertex2f(20.0, 20.0); glVertex2f(20.0, 290.0); //--Histogram Data-- ... } glEnd(); Die Funktion wird im Hauptprogramm mit glutDisplayFunc(display); aufgerufen. Im Grunde genommen ist es eine Animation. Ich möchte jeden neu hinzugekommenen Datenpunkt in mein Histogramm einzeichnen. Und das alles während das Programm noch läuft. Ist mein Problem jetzt etwas klarer geworden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Mai 2006 Teilen Geschrieben 16. Mai 2006 Die Funktion wird im Hauptprogramm mit glutDisplayFunc(display); aufgerufen.Nein, damit setzt du nur den Funktionszeiger für die Displayfunktion. Ein Aufruf ist das nicht. Ist mein Problem jetzt etwas klarer geworden?Nein. Warum packst du deine Histogrammdaten nicht einfach in eine globale Variable - oder einen Singleton, falls du keine globalen Variablen benutzen möchtest? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.