tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
196
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    pria pria ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    85
    Moin,
    Ich hab n Programm geschrieben , dass ne Textur laden soll , doch es spuckt mir immer an der stelle ne OutofBoundsException aus.

    Code :
    1
    
    textures[id] = TextureLoader.FromStream(device, ZipReader.getStream(pak, file));

    Ich hol mir den Stream aus nem ZipArchiv

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    internal static Stream getStream(string file, string streamObject)
            {
                Stream ret = null;
                try
                {
                    /*string[] s = streamObject.Split('/');
                    streamObject = "";
                    for (int i = 0; i < s.Length; i++)
                    {
                        streamObject = streamObject + s[i];
                        if (i < s.Length - 1)
                            streamObject = streamObject + "\\";
                    }*/
     
                    ZipInputStream zis = new ZipInputStream(File.OpenRead(file));
                    ZipEntry ressource;
     
                    int nBytes = 2048;
                    byte[] data = new byte[2048];
     
                    while ((ressource = zis.GetNextEntry()) != null)
                    {
                        if (ressource.IsFile && ressource.Name.Equals(streamObject))
                        {
                            MemoryStream ms = new MemoryStream();
                            while ((nBytes = zis.Read(data, 0, data.Length)) > 0)
                            {
                                ms.Write(data, 0, nBytes);
                            }
                            ret = ms;
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
     
                return ret;
            }

    Es ligt definitiv nich an der id-Variable , das hab ich überprüft.
    Wäre nett wenn einer ne Antwort wüste.
     

  2. #2
    pria pria ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    85
    Gibt es bei Direct3D vill eine Maximalgröße für Texturen?
     

  3. #3
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    In deiner Schleife
    Code :
    1
    
     while ((ressource = zis.GetNextEntry()) != null)
    Überschreibst du immer wieder ret.
    Soll das so sein? Wenn ja, warum?
    Könnte es vielleicht daran liegen?
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  4. #4
    pria pria ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    85
    Nee , das muss so sein , da die Schleife ja nur dann ausgeführt wird , wenn eine Übereinstimmung mit dem gesuchten Dateinamen auftritt.
    Ich bin das ausserdem auch durchgegangen , das klappt soweit und ich bekomme den fertigen Stream mit der Textru aus dem Packet.