[Erledigt]D3DXLoadSurfaceFromFile variabler Dateiname?



  • Hi,

    wie der Titel schon sagt versuche ich in der Funktion:

    D3DXLoadSurfaceFromFile(m_lpSurface,      // Oberflaeche in die die Grafik 
                                                   // geladen werden soll
                                NULL,             // Palette
                                NULL,             // Zielrechteck
                                "Charset/Newabraxas.bmp",        // Dateiname der
                                                                 // Grafik
                                NULL,             // Quellrechteck
                                D3DX_FILTER_NONE, // Filter
                                0,                // Colorkey
                                NULL);
    

    den 4. Parameter, also den string durch eine Varible string zu ersetzen, allerdings akzeptiert er das nicht. Nun stehe ich vor einem Problem, da ich meine Funktion ja nicht 2000 mal schreiben möcht, nur mit geändertem string. 🙂
    Was habe ich da für Möglichkeiten?
    Jemand eine Idee?

    mfg



  • > allerdings akzeptiert er das nicht.

    Wieso akzeptiert er das nicht?

    std::list<std::string> files = load_some();
    for(std::list<std::string>::const_iterator iter = files.begin(); iter != files.end(); ++iter) {
       D3DXLoadSurfaceFromFile(m_lpSurface,      // Oberflaeche in die die Grafik
                                                 // geladen werden soll
                               NULL,             // Palette
                               NULL,             // Zielrechteck
                               iter->c_str(), // Dateiname der
                                                         // Grafik
                               NULL,             // Quellrechteck
                               D3DX_FILTER_NONE, // Filter
                               0,                // Colorkey
                               NULL);
    }
    


  • D3DXLoadSurfaceFromFile(m_lpSurface,      // Oberflaeche in die die Grafik
                                                   // geladen werden soll
                                NULL,             // Palette
                                NULL,             // Zielrechteck
                                your_string.c_str(),        // Dateiname der
                                                                 // Grafik
                                NULL,             // Quellrechteck
                                D3DX_FILTER_NONE, // Filter
                                0,                // Colorkey
                                NULL);
    

    Wenn du das genaue Problem mit dem Fehler postest, dann hilft das üblicherweise sehr viel weiter.
    Du hast Glück, dass das Problem recht einfach zu beheben ist. 😉



  • std::string hat die Methode c_str() , die dir einen const char* auf den Inhalt gibt.

    std::string file("Charset/Newabraxas.bmp");
    D3DXLoadSurfaceFromFile(m_lpSurface,      // Oberflaeche in die die Grafik
                                                   // geladen werden soll
                                NULL,             // Palette
                                NULL,             // Zielrechteck
                                file.c_str(),        // Dateiname der
                                                                 // Grafik
                                NULL,             // Quellrechteck
                                D3DX_FILTER_NONE, // Filter
                                0,                // Colorkey
                                NULL);
    


  • Dankeschön.

    Ich habe mir gedacht, das ich hier nicht unbedingt eine Fehlermeldung brauche, da die Funktion ja recht häufig genutzt werden sollte. 🙂
    Aber gut, werde ich mir für das nächste mal merken^^

    mfg



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten