Tetris Fan



  • Prototyp von GetBackBuffer

    HRESULT
    IDirect3DDevice8::GetBackBuffer(UINT uBackBuffer // Zu ermittelnden Back Buffer
    D3DBACKBUFFER_TYPE Type // unwichtig, muss D3DBACKBUFFER_TYPE_MONO sein
    IDirect3DSurface8 ** pBuffer // Die Surface, in der die Funktion den ermittelten Back Buffer speichert);

    m_pCSurface ist vom Typ Surface, eine Klasse von mir, hier ein abhespeckter prototyp (GetSurface wird gleich mit erklärt):
    class Surface
    {
    protected:
    IDirect3DSurface8 * m_pIDirect3DSurface;
    public:
    IDirect3DSurface8 * GetSurface();
    };

    IDirect3DSurface8 * Surface::GetSurface()
    {
    return m_pIDirect3DSurface;
    }

    und hier nochmal das prob:
    GetBackBuffer verlangt einen zeiger auf einen zeiger. GetSurface gibt jedoch nur einen Zeiger zurück (das muss auch so bleiben). also benutze ich den adress operator, um die adresse dieses pointers zu übergeben und erhalte error C2102...
    HILFE BITTE *heul*



  • Hm, mit Zeiger auf Zeiger kenn ich mich schon lange nicht mehr aus...

    [mal raten]
    Versuchs mal so

    int * bar();
    void foo(int **);
    
    int * i = bar();
    foo(&i);
    

    [/mal raten]

    Also einen Hilfszeiger verwenden und die Adresse aus diesen übergeben. 😕



  • sowas hatte ich auch schon, aber das funzt net, das programm, manchmal sogar das ganze system, hängt sich auf...



  • Lege die Variable mal global an. Nicht das auf Speicher zugegriffen wird der nich dir ist (temporäre Variable die zerstört wurde)



  • ja, das klappt, aber dann ist die sache mit dr Surface klasse eigentlich sinnlos...
    P.S. sorry, hab das jetzt grade selber nochmal ins game coding forum geschrieben, und schon war der thread verschoben, wie gesagt, sorry...
    falls ihr mods einen löschen wollt, bitte diesen hier, ich meine wegen der benutzername<->Titel sache...



  • Naja, Du bekommst einen Zeiger (A). Erwartet wird aber ein Zeiger (B) auf einen
    Zeiger (A). Da A aber nirgends an eine Variable gebunden ist verhilft man
    sich einfach mit einer Hilfsvariablen (C).

    Du übergibst irgendjemand den Zeiger (B) auf die Hilfsvariable (C).
    C wird nach verlassen der Funktion zerstört. Somit ist die Adresse (B) ungültig. Da kann nun alles mögliche drinn stehen. Der Routine der Du aber B gegeben hast geht von wirklichen Werte naus und macht damit seine Arbeit.

    Hm, ich hoffe alle klarheiten sind beseitigt 🤡

    Details zur Lösung kann ich Dir nich bieten da ich nich weiß um was es geht.

    Und, nein ich war nich bei Ikea einkaufen heute ;o)



  • Knuddlbaer schrieb:

    Lege die Variable mal global an.

    Tolle Lösung.

    Bye, TGGC



  • @TGGC:
    Scheiss lösung, denn das ist C# und er will C++!



  • *** schrieb:

    @TGGC:
    Scheiss lösung

    Sag ich doch, nur ironisch. Lern Denken.



  • @TGGC:
    lern du erstmal freunde finden, dann reden wir weiter



  • TGGC schrieb:

    Sag ich doch, nur ironisch. Lern Denken.

    http://www.guardian.co.uk/weekend/story/0,3605,985375,00.html



  • *** schrieb:

    @TGGC:
    lern du erstmal freunde finden, dann reden wir weiter

    Lern das Echo zu vertragen.



  • TGGC schrieb:

    Knuddlbaer schrieb:

    Lege die Variable mal global an.

    Tolle Lösung.

    Bye, TGGC

    Es ging hier um eine Lösungsfindung warum sein Programm zum Absturz führt.
    Es wurde nirgends behauptet das es "die" Lösung ist.

    Da sicherlich nicht jeder ein Spezialist in D3D Programmierung ist wie Du sind manche auf Nachdenken und Probieren angewiesen. Sicherlich werde ich niemanden einen Komplexen Lösungsweg aufzeichnen um zu Probieren warum das Programm kracht zu finden. Das Anlagen einer Globalen variable garantierte das die Speicheradresse gültig ist bis das Programm beendet ist. Ich bin mir aber sicher das Du das bereits wusstest. Ich bin mir sicher das Du als D3D Spezialist eine simple und Akzeptable Lösung für Tetris Fan hast die das Problem löst und in seine Klasse implementiert werden kann. 🙄



  • tggc irgendwie scheint es deine aufgabe zu sein sinnlos zu posten und andere zu beleidigen, das sda hier noch geduldet wird scheint mir ein rätsel..

    aber der mir vorhergehende beitrag scheint sehr auf dich zu zu treffen.. 🙂



  • hehe schrieb:

    tggc irgendwie scheint es deine aufgabe zu sein sinnlos zu posten und andere zu beleidigen, das sda hier noch geduldet wird scheint mir ein rätsel..

    aber der mir vorhergehende beitrag scheint sehr auf dich zu zu treffen.. 🙂

    Jo Mods sollten durchgreifen! tggc sucks!



  • *** scheint mir sympathisch zu sein 😃

    gründen wir eine foundation

    FTGGCF - FREE TGGC FOUNDATION

    TGGC nicht ernst nehmen :D, siehste wir wollen uns anfreunden...



  • hehe schrieb:

    *** scheint mir sympathisch zu sein 😃

    gründen wir eine foundation

    FTGGCF - FREE TGGC FOUNDATION

    TGGC nicht ernst nehmen :D, siehste wir wollen uns anfreunden...

    Ich bin dabei...!! 🤡 👍 😃 😃


Anmelden zum Antworten