Beiträge von fabbishmain

    Hallo!

    Mein Programm besitzt 4 Splitter windows, die eine OpenGL Szene aus unterschiedlichen Ansichten darstellt. Jedes Mal, wenn die onMouseMove-Methode eines dieser Fenster aufgerufen wird, sollen Berechnungen abhängig von der gegenwärtigen Mausposition durchgeführt werden.

    Nach Abschluss der Berechnungen sollen dann alle vier Fenster aktualisiert werden, in ihnen befindet sich die OpenGL - Darstellung einer Szene. Anscheinend dauern aber entweder die Berechnungen zu lange (es müssen teilweise von bis zu 1000 Matrizen die Pseudoinversen berechnet werden (sind allerdings recht kleine, dies geschieht mittels Singulärwertzerlegung) oder sie sind so schnell, dass durch das ständige Aufrufen der invalidate-Methoden der einzelnen Fenster ein Problem auftritt.

    Das erste Fenster wird noch flüssig aktualisiert, dass nächste nur ab und an und bei den anderen tut sich teilweise gar nichts. Hab auch mal eine Zählvariabel in der OnDraw-Methode eingebaut, diese unterscheidet sich dann bei extremer Prozessorbelastung, ansonsten werden alle Fenster gleichmässig aktualisiert.

    Spasseshalber habe ich mal eingebaut, dass nur bei jedem 4. Aufruf der OnMouseMove-Methode etwas getan wird, dann läuft es relativ flüssig in allen Fenstern. Aber gibt es da nicht eine schönere Methode, um alle Fenster zu aktualisieren?

    Vielen Dank schon mal für die Hilfe, wäre echt prima wenn ihr eine Lösung finden könntet. Ist für meine Diplomarbeit, also nicht ganz unwichtig... ;)

    Basti

    Hallo!

    Ich habe folgendes Problem:

    Ich habe eine Klasse Angles, die ein doubleArray variabler Größe aufnehmen soll. In dieses Array sollen Winkel gespeichert werden.

    Nun möchte ich Objekte dieser Klasse Angles in einen Vektor speichern bzw. Objekte kopieren usw. Dazu wurde von mir ein Kopierkonstruktor gebaut, der neuen Speicher auf dem Heap reserviert, um dieses Array zu speichern.

    Wenn ich nun Objekte kopiere, funktioniert dies ganz gut. Allerdings werden beim Speichern dieser Objekte in den Vektor anscheinend nur die Referenzen übernommen und kein neuer Speicher auf dem Heap reserviert. Wenn ich nun ein tenporäres Objekt erzeuge und in einen Vektor speichere, dann kracht es am Ende der Funktion, weil der Destruktor der Angleklasse aufgerufen wird und den Speicher wieder freigibt, aber anscheinend das Objekt im Vektor immer noch auf die freigegebene Stelle zeigt.

    Was für eine Lösung würdet ihr mir hierfür vorschlagen? Ich habe mal was von Smartpointern oder Referenzzählern gehört, aber was ist die einfachste (und effizienteste) Lösung? Leider scheint das Problem auch noch an anderen Stellen aufzutreten...