Meshnummer über 10000

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
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

Meshnummer über 10000

Beitrag von Chimorin »

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
Bild

- formerly known as Bananenfreak -
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Meshnummer über 10000

Beitrag von STARGÅTE »

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
Benutzeravatar
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

Beitrag von Chimorin »

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.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
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

Beitrag von NicTheQuick »

Bananenfreak hat geschrieben:Ich finde die Meldung bescheuert, wenn man sich mal die Rückgabewerte anschaut, liegen die in den 100k´ern.
Die IDs, die du mit #PB_Any bekommst, sind in Wirklichkeit auch Pointer, also Speicherstellen, an denen irgendwelche Informationen abgelegt sind.
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.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Meshnummer über 10000

Beitrag von PMV »

Bananenfreak 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.
Das Objektsystem von PureBasic ist ja nichts anderes als
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. :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
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

Beitrag von Chimorin »

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.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Meshnummer über 10000

Beitrag von PMV »

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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten