T
@tggc
Danke für die Erklärung (Entschuldigung für meine schlechte Laune heute morgen ).
Also SetResolution ruft auch ResizeBuffer der Basisklasse auf. Dort wird dann mit glBufferData(GL_ARRAY_BUFFER, buffersize, nullptr, GL_STREAM_DRAW) die Buffergrösse festgelegt, soweit ich weiss aber auch der Inhalt "gelöscht" bzw. "überschrieben" (Deshalb übergebe ich einen nullptr und keinen pointer auf die vertices), da nur die Buffergrösse festgelegt werden soll.
Mit glBufferSubData(GL_ARRAY_BUFFER, 0, vertices.size() * sizeof(VertexVN), vertices.data())"lade" ich dann in der Memberfunktion SetBuffer der Basisklasse die vertices in den Buffer.
Es kann dann sein, wenn ich nach SetShape(position, radius) SetResolution aufrufe (in SetShape wird auch SetBuffer aufgerufen) , die vertices nicht mehr im Buffer sind und die Draw Anweisung "crasht".
SetResolution war public, dann private jetzt protected, aber in einer neuen zusätzlichen Basisklasse für CircleShape und CircleSectorShape.
Bin per google "funktion überladen in abgeleiteter klasse" auf eine sehr altes Thema "Basisklassenmethode in abgeleiteter Klasse überladen - Wie?" im C++-Forum gestossen. Da ich dachte, dass ich alle gemeinsamen Variablen und Funktionen in die neue Basisklasse schiebe. Aber die Funktionen sollen in den abgeleiteten Klassen auch überladen werden und das geht scheinbar nur im gleichen Scope (Sichtbarkeitsbereich) bzw. in der gleichen Klasse, sonst werden die Funktionen der Basisklasse überdeckt oder überschrieben.
Sind eigentlich alle Variablen bzw. Objekte und Funktionen einer Klasse Membervariablen und Memberfunktionen, oder wird zwischen public, protected, private und aus Basisklassen übernommenen Variablen bzw. Objekte und Funktionen entsprechend unterschieden.
Vielen Dank für alles