Heyho,
ich habe ein bisher kleines Projekt, welches aber erweiterbar auf große Dimensionen sein soll. Inkludiert sind natürlich Platz für ne Menge Meshes, was aber Probleme schafft. Der Debugger nervt mich damit, dass die Meshnummer über 10000 wäre...
Hintergrund: Bisher soll es ein Holzfällsimulator werden (Mittelalter) mit Andockpunkt für mehr. Ein Baum hat verschiedene Altersstufen (Bis zu 6) und dementsprechend andere Meshes. Damit es realistisch wird, kann es bis zu 1000 verschiedene Baumtypen erweitert werden, welche alle in verschiedene Teile aufgeteilt sind (Stamm, Wurzelstock,...). Somit brauche ich also wirklich die "hohen" Zahlen.
Ist das ein so groooßes Problem, weil es (die hohen Meshzahlen, bzw. die vielen Meshes) so viel Performance schluckt oder so? Oder kann ich das irgendwie ignorierbar machen (Da gibt's doch sowas wie DebuggerIgnore oder so)?
Gruß,
Banane
Meshnummer über 10000
Re: Meshnummer über 10000
Nutze einfach #PB_Any beim Erstellen/Laden der Meshs, und speicher deren Nummer zB in einem Array oder List oder Struktur.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: Meshnummer über 10000
Ich habs mit nem Array gemacht. Danke für die Antwort. Jetzt gibt's halt ein Array, welches 100000 Plätze hat ^^
Ein Teil muss ja final sein, sonst weiß das Programm nach dem Speichern und erneuten Laden nicht mehr, was das derzeitige Teil ist. Hab ich einfach über die Plätze realisiert.
Ich finde die Meldung bescheuert, wenn man sich mal die Rückgabewerte anschaut, liegen die in den 100k´ern.
Ein Teil muss ja final sein, sonst weiß das Programm nach dem Speichern und erneuten Laden nicht mehr, was das derzeitige Teil ist. Hab ich einfach über die Plätze realisiert.
Ich finde die Meldung bescheuert, wenn man sich mal die Rückgabewerte anschaut, liegen die in den 100k´ern.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Meshnummer über 10000
Die IDs, die du mit #PB_Any bekommst, sind in Wirklichkeit auch Pointer, also Speicherstellen, an denen irgendwelche Informationen abgelegt sind.Bananenfreak hat geschrieben:Ich finde die Meldung bescheuert, wenn man sich mal die Rückgabewerte anschaut, liegen die in den 100k´ern.
PB unterscheidet dann zwischen den Pointern und den selbst festzulegenden statischen IDs anhand der Größe des Wertes. Denn üblicherweise liegen die Werte von Pointern immer über 10.000.
Re: Meshnummer über 10000
Das Objektsystem von PureBasic ist ja nichts anderes alsBananenfreak hat geschrieben:Ich habs mit nem Array gemacht. Danke für die Antwort. Jetzt gibt's halt ein Array, welches 100000 Plätze hat ^^
Ein Teil muss ja final sein, sonst weiß das Programm nach dem Speichern und erneuten Laden nicht mehr, was das derzeitige Teil ist. Hab ich einfach über die Plätze realisiert.
Ich finde die Meldung bescheuert, wenn man sich mal die Rückgabewerte anschaut, liegen die in den 100k´ern.
ein Array, welches die eigentlichen Referenzen speichert.
Wenn du also die Objektnummer 10.000 verwendest, hat
das Array auf einen Schlag 10k Elemente. Genau aus dem
Grund kommt die Meldung. Wer tatsächlich mehr braucht,
was in deinem Fall zutrifft, der nutzt #PB_Any ... ich für
meinen Teil hab noch nie die PB-Nummern verwendet sondern
immer und überall #PB_Any.

MFG PMV
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: Meshnummer über 10000
Vielen Dank für die Antworten, die haben mein Wissenshorizont ein bisschen erweitert 
@Nic:
Wenn ich das richtig verstehe, könnte ich also mit der ID, die in Wahrheit ein Verweis auf die Speicherstelle ist, die richtige ID auslesen? Genau das macht dann wohl MeshID(), oder?
@PMV:
Gut, wusste ich vorher noch nicht
Dann gibt es Verbesserungsbedarf in einigen Programmen.

@Nic:
Wenn ich das richtig verstehe, könnte ich also mit der ID, die in Wahrheit ein Verweis auf die Speicherstelle ist, die richtige ID auslesen? Genau das macht dann wohl MeshID(), oder?
@PMV:
Gut, wusste ich vorher noch nicht

Re: Meshnummer über 10000
Was genau die ganzen XXXID() Funktionen zurück geben ist
meist nicht dokumentiert, es ist aber davon aus zu gehen, das
diese die jeweiligen internen IDs zurück geben. Bei MeshID(), EntityID(),
usw. wohl die "internen" OGRE-Referenzen. WindowID() unter Windows
gibt als zusätzliches Beispiel das "hWnd" zurück.
PB hat in den meisten Fällen noch ein eigenes Objektsystem
oben drauf. Auch bei #PB_Any wird noch ein eigenes "Objekt"
generiert, welches PB zur Verwaltung verwendet.
MFG PMV
meist nicht dokumentiert, es ist aber davon aus zu gehen, das
diese die jeweiligen internen IDs zurück geben. Bei MeshID(), EntityID(),
usw. wohl die "internen" OGRE-Referenzen. WindowID() unter Windows
gibt als zusätzliches Beispiel das "hWnd" zurück.
PB hat in den meisten Fällen noch ein eigenes Objektsystem
oben drauf. Auch bei #PB_Any wird noch ein eigenes "Objekt"
generiert, welches PB zur Verwaltung verwendet.
MFG PMV