Seite 1 von 2
Image Anzahl Limit
Verfasst: 01.02.2017 16:14
von KeyKon
Kurze Frage: Gibt es denn ein Limit wie viele Images gleichzeitig initialisiert sein können?
Bei mir scheitert das anlegen neuer Images immer kurz vor 10.000.
Wenn ja, woher kommt das Limit (PureBasic/Windows) und gibt es einen einfachen Workaround?
(Mein bisheriger Ansatz ist die Images als BMP in den Speicher zu sichern und von dort bei Bedarf wieder zu laden <.< )
Es geht übrigens um kleine Images (32x32), am Speicher hakts also nicht.
Ich nutze 5.44x64 unter Win10x64.
LG KeyKon
Re: Image Anzahl Limit
Verfasst: 01.02.2017 16:44
von RSBasic
Meinst du diese Warnungsmeldung?
[ERROR] #Image Objektnummer ist sehr hoch (über 100000), sind Sie dazu sicher?
Benutzt du statische IDs für deine Grafiken oder #PB-Any?
Bei statischen IDs bekommst du automatisch eine Debugger-Warnung, die das Benutzen größerer Zahlen verhindert. Umgehen kannst du mit DisableDebugger oder du benutzt stattdessen #PB-Any.
Re: Image Anzahl Limit
Verfasst: 01.02.2017 16:47
von #NULL
hier gibt's einen von mehreren threads im englischen form dazu:
http://www.purebasic.fr/english/viewtop ... 13&t=67407
im grunde scheinbar einfach eine windows-seitige limitierung der anzahl der handles.
hier zum testen:
Code: Alles auswählen
NewList img()
For i=0 To 10000
AddElement(img())
img() = CreateImage(#PB_Any, 320, 32)
If Not img()
Debug "" + i + " nope"
EndIf
Delay(1)
Next
win=OpenWindow(#PB_Any, 50,100, 800, 600, "") :: AddKeyboardShortcut(win, #PB_Shortcut_Escape, 10)
Repeat
e = WindowEvent()
Until e = #PB_Event_CloseWindow Or e = #PB_Event_Menu
Re: Image Anzahl Limit
Verfasst: 01.02.2017 16:47
von KeyKon
Ne nutze ausschließlich #PB_Any, man kann das ganze auf ein kleines Beispiel reduzieren:
Code: Alles auswählen
EnableExplicit
Define i.i
Dim Images.i(20000)
For i = 0 To 20000
Images(i) = CreateImage(#PB_Any,32,32)
If Images(i) = 0
Debug "Error"
Break
Else
Debug i
EndIf
Next
EDIT: k THX für den Link.
Re: Image Anzahl Limit
Verfasst: 01.02.2017 17:12
von ts-soft
RSBasic hat geschrieben:Meinst du diese Warnungsmeldung?
[ERROR] #Image Objektnummer ist sehr hoch (über 100000), sind Sie dazu sicher?
Über hunderttausend, finde ich auch ein bissel viel

Re: Image Anzahl Limit
Verfasst: 02.02.2017 04:55
von Bisonte
Du willst doch nicht allen ernstes behaupten dass alle 10000 Bilder gleichzeitig zu sehen sind ?
Dann solltest du eventuell deine Programmierung überdenken....

Re: Image Anzahl Limit
Verfasst: 02.02.2017 10:02
von RSBasic
Bisonte hat geschrieben:Du willst doch nicht allen ernstes behaupten dass alle 10000 Bilder gleichzeitig zu sehen sind ?
Dann solltest du eventuell deine Programmierung überdenken....

Vielleicht programmiert er ein großes Spiel. Da ist schon möglich, dass man viele verschiedene Sprites hat.
Re: Image Anzahl Limit
Verfasst: 02.02.2017 11:40
von #NULL
AddImageFrame() der beta 5.60b1 bringt übrigens auch nichts, das gesamtlimit bleibt bestehen.
wenn du keine sprites verwenden willst kannst du eventuell trotzdem 'spritesheets' in images halten und mittels ClipOutput() und entsprechendem offset ein ClipImage simulieren.
Re: Image Anzahl Limit
Verfasst: 02.02.2017 19:06
von ccode_new
Hallo,
wozu um alles in der Welt braucht man >=10000 Bilder gleichzeitig im Speicher?
Du willst doch nicht allen ernstes behaupten dass alle 10000 Bilder gleichzeitig zu sehen sind ?
Dann solltest du eventuell deine Programmierung überdenken....
Dieser Aussage kann ich nur zustimmen.
Du kannst ja auch mal versuchen die Bilder nur zu zeichnen und nicht als Gadget einzufügen.
Re: Image Anzahl Limit
Verfasst: 02.02.2017 22:04
von KeyKon
Ich hab nirgendwo geschrieben dass ich diese gleichzeitig anzeigen muss oder will. Noch hab ich irgendwo jemals was von Gadgets geschrieben, es gibt genau ein Gadget und zwar ein Canvas^^
In den meisten Fällen fallen auch nicht so viele Bilder (Animationsschritte/Thumbnails) an. Nur wenn man von diesem Limit eben nichts weiß ist man doch verdutzt wenn bei längeren Härtetests unwillkürlich Fehler auftreten. Hat einige Zeit gedauert bis ich gemerkt hab dass das immer bei ca 10.000 der Fall ist.
In Zeiten von Rechnern mit 8GB+ RAM hatte ich mir halt gedacht ich spar mir bei jedem Anzeigen das neu manipulieren/laden der Bilder und lasse sie einfach im Speicher^^
Ist dann halt leider doch nicht so ohne extra management möglich.
LG KeyKon