Ancalagon Geschrieben 16. Mai 2006 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.
Klotzkopp Geschrieben 16. Mai 2006 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?
Ancalagon Geschrieben 16. Mai 2006 Autor 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?
Klotzkopp Geschrieben 16. Mai 2006 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?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden