Seite 2 von 4

Verfasst: 06.07.2005 22:23
von Laurin
3170, 32 MB

Hab ich was verpasst? :shock:
(System im Profil)

Verfasst: 06.07.2005 22:34
von 125
Hi,
also das is ja mal nen Phänomen: 4160
Und wenn ich direkt mit size=32000 öffne funzts aber auch 32000....

Is PB Buggy? :shock:

mfg
125

Verfasst: 06.07.2005 22:36
von ts-soft
Laurin hat geschrieben:3170, 32 MB

Hab ich was verpasst? :shock:
(System im Profil)
Du solltest mal im Taskmanager nachsehen, was da alles noch läuft. Oder PCI-Express ist doch nicht so gut /:->

Verfasst: 06.07.2005 23:22
von Helle
Ist wohl mehr ein Problem der Video-Speicherverwaltung des Betriebssystems. Windows XP32 mit 32-Bit Videoauflösung ergibt bei mir 5.220/88MB, bei 16-Bit Videoauflösung sind es 7.390/177MB. Lege ich fest, PB soll nur mit 256 Farben ausgeführt werden, gibt es folgende Werte: 10.440/353MB.
Die Begrenzung auf 8.192 scheint nicht mehr gültig zu sein.
XP64 regelt das Ganze offensichtlich besser.

Gruss
Helle

Verfasst: 06.07.2005 23:42
von computerkranker
Image haben nichts mit der Grafikkarte und deren Speicher zutun, außer man bildet das Image auf dem Bildschirm ab. Im Speicher sind sie nur eine Datenmenge, die halt als Type Image verwaltet wird. Das sieht man am besten daran, dass man Image’s erzeugen kann die größer sind als der Grafikkartenspeicher, z.B. bei Laptops mit Shared-Grafikkartenspeicher der ist meistens 16 oder 32 MB. Trotzdem kann man dort mit PB ein 60 MB großes Image erzeugen.

Ich lasse mich natürlich gern eines besseren belehren.

Verfasst: 07.07.2005 04:01
von Laurin
ts-soft hat geschrieben:
Laurin hat geschrieben:3170, 32 MB

Hab ich was verpasst? :shock:
(System im Profil)
Du solltest mal im Taskmanager nachsehen, was da alles noch läuft. Oder PCI-Express ist doch nicht so gut /:->
29 Prozesse, 313 MB RAM verbraucht (aber nur weil Firefox gerade 85 MB verbraucht :wink: ). Es ist also noch ein 2/3 GB frei.

125-Methode funktioniert auch bei mir.

Re: Umfrage zur maximalen Imagegröße

Verfasst: 07.07.2005 09:04
von Jason
computerkranker hat geschrieben:Ich bekomme es einfach nicht hin, die in der Hilfe angegebene Größe von 8192x8192 mit dem Befehl CreateImage() zu erreichen. Bei mir ist bei 4630x4630 Schluss.
Ab Seite 2 lesen...
http://forums.purebasic.com/german/view ... c&start=10

Und...
http://forums.purebasic.com/german/view ... =loadimage

3000, 29MB

Win98se, Matrox G450 steht auf 24Bit Farbtiefe, 512MB RAM

Verfasst: 07.07.2005 10:59
von computerkranker
In VMWare Win98SE habe ich jetzt auch mal getestet.

Das Ergenis ist schon ein wenig komisch.

512MB Frei 465MB |2050 13MB
256MB Frei 180MB |2050 13MB
128MB Frei 74MB |2050 13MB
64MB Frei 26MB | 2050 13MB
32MB Frei 16MB | 2050 13MB
16MB Frei 0MB beim Start und nach dem Test 8MB es dauerte auch sehr lange :-)|2050 13MB


Das es nicht an einer Begrenzung des Rechners(RAM oder GK) liegt kann man mit folgenden Bespiel gut testen.
Da das Programm endlos läuft und am Ende den Speicher für das Image nicht frei gibt, sollte beim Starten einer weiteren Instanz kein Image mehr erzeugt werden. Bei mir kann ich aber mit jeder Instanz immer wieder die gleiche Imagegröße erzeugen.

Code: Alles auswählen

Exit=0 
Size=1000 
Repeat 
  If CreateImage(1,Size,Size) 
    FreeImage(1) 
    Size+10 
    Debug Size 
  Else 
    Exit=#True 
  EndIf 
Until Exit 
Debug "Erstellt bis: "+Str(Size) 
Debug Str(Size*Size*4/1024/1204)+"MB" ;bezogen auf 32Bit 
CreateImage(1,size,size)
Repeat
ForEver

Verfasst: 07.07.2005 11:06
von Ynnus
Nun, ein Image, unkomprimiert, befindet sich doch in der Form Header + BGR in der BMP-Datei und wird im Speicher einfach zu RGB gedreht, soweit ich weiß. Manche Programme können on-the-fly umrechnen und benötigen kein Umdrehen des 1ten und 3ten byte. Der Speicherverbrauch eines Bitmaps mit 24 bit ist also höhe * breite * 3. Um ein Image zu erstellen benötigt es also nichts weiter als den Speicher zu reservieren und Bytedaten des Images einzuladen oder anzugeben. Was dann noch Fehlt wäre ein Header, der macht aber nur noch 54 Byte aus.

Wie genau das PB intern macht, weiß ich natürlich nicht, aber irgendwas läuft da gewaltig schief, wenn gerade mal ca. 50 MB Speicher bereitgestellt werden können, wo mehr drinne wär. Mittels AllocateMemory komme ich hingegen zu 23.000 x 23.000 * 3 = 1,587 GB Speicher. Das bedeutet, der Speicher wäre da, nur PB macht das mit Images irgendwie anders.

Ich hab parallel dazu ein C/C++ -Programm geschrieben welches die gleiche Funktion hat und Speicher bereitstellt:

Code: Alles auswählen

#include <iostream>

using namespace std;

int main()
{
    int size = 3000;
    bool repeat = false;
    char* buffer = NULL;

    while(repeat == false)
    {
        buffer = (char*) malloc(size*size*3);
        if (buffer != NULL)
        {
            size+=100;
            cout<<size<<endl;
        }
        else
        {
            repeat = true;
        }
        free(buffer);
        buffer = NULL;
    }
    cout<<"Maximale Groesse: "<<size<<" Byte. Das sind "<<size*size*3/1000/1000<<" MB im Speicher.";
    cin.get();
}
Hier können sogar 25900 *25900 * 3 Byte = ca. 2012 MB Speicher reserviert werden. Und dieser Speicher könnte zur Bildung eines Images genutzt werden, denn letztendlich ist ein Image im Speicher ja nichts weiter als ein Byte-Array von breite x höhe x (bitProPixel/8).
Mittels der WinAPI kann man auch Images aus solchen Speicherbereichen erstellen. Ich habe es nicht getestet aber theoretisch müsste es klappen, aus diesem Byte-Array ein Image zu erstellen welches dann eventuell auch in PB nutzbar wäre. Oder zumindest mit den WinAPI-Funktionen könnte man mit dem Image handlen.

EDIT: Schon klar, ich müsste durch 1024 teilen, war mir zu dumm. Näherungswerte reichen mir hier auch aus, ob das nun 2000 MB oder 2048 MB sind, macht hier wenig Unterschied. ;)

Verfasst: 07.07.2005 11:20
von computerkranker
Als ich das ganze schon mal im Bug Forum angesprochen habe schrieb Fred:
Just checked the code and couldn't detect any problem. I could see difference on my system when switching the desktop depth from 32 bits to 16 bits (more images can be created). That's because the images matches the display format.
http://forums.purebasic.com/english/vie ... terkranker

Mit 13MB unter Win98 für Bilder, kann ich persönlich nicht leben >_<