Kleiner Neuling braucht Hilfe



  • Guten Abend liebe Mitcoder. Ich programmiere seit einiger Zeit an einem Spiel und habe währenddessen 2 mal die Programmiersprache gewechselt, von Delphi nach Java und dann zu c++. Damit bin ich jetzt am zufriedensten. Jetzt habe ich leider ein Problem, und zwar sind das die Ladezeiten: wenn mein Spiel das erste Mal starten, hängt die ganze App erstmal oder wenn ich ein großes Model lade hängt es auch. Ich habe deshalb versucht mit CreateThread() das hinzu bekommen, aber leider klappt es nicht. Habe in diesem und diversen anderen Foren gesucht und auch Codebeispiele ausprobiert, aber nichts hat funktioniert. Hier ist mein Code:

    hThread[1] = CreateThread( NULL, 0, Create(X,Y,Z), (LPVOID), 0, &dwThreadID[1]);
    

    und das die Funktion:

    void Item::Create(float x, float y, float z)
    

    Ich hoffe, dass mir einer von euch helfen kann und vielleicht sogar per messenger ein paar Fragen beantworten könnte.
    Vielen Dank im Voraus
    mfg Dustin



  • Eine kleine Frage vorab ... willst Du das Projekt mittels MFC machen, oder "nur" mit C++?

    Was lädst Du denn beim Start deiner Applikation grosses rein, dass soviel Zeit in Anspruch nimmt? Ist der Start deines Spiels von diesen Objekten abhängig? Wenn ja, dann wird dir auch ein extra Thread nichts bringen. Wenn Du aber erstmal eine Oberfläche/Hauptmenü sehen willst und der Kram im Hintergrund weitergeladen werden kann, bist du mit einem Extrathread schon mal auf der richtigen Spur.
    Nur wo genau liegt dein Problem? Hast Du Probleme mit einem genauen Syntax/Compiler Fehler/ Runtime Errors, oder willst Du Tips für deine Architektur?



  • Danke für deine schnelle Antwort 🙂
    genau das meine ich, dass so eine Art Ladebildschirm erscheint. Mein Problem liegt in der syntax, der Compiler meint, dass in meinem Code zum Erstellen des Threads was falsch ist, ein Kommata soll fehlen
    mfg Dustin
    P.S. gerne mit mfc (wenn das die includes sind)



  • lege deine Funktion Create(float x, float y, float z) global an und nicht als Funktion der Klasse Item.
    Um von Create aus auf das Objekt Item zuzugreifen kannst ja ein Zeiger auf Item mit Create(...) übergeben.

    also
    void Create(float x, float y, float z, Item *pItem)



  • ah danke, das hat mir geholfen 🙂
    was muss ich denn dann beim zeiger reinschreiben, wenn ich die funktion aufrufen möchte?
    mfG


Anmelden zum Antworten