versuch 2



  • bool my_3dobj_inuse[1000];
    

    zeromem(&my_3dobjs_inuse,sizeof(bool)*10000); sollte da ausreichen um es zu initialisieren oder ?!

    ...muesste gerade so "ausreichen" 😉
    uebrigens gibt es eine tolle erfindung namens constructor...

    bei nen anderen funzt es, nur bei der nvidia nicht

    entferne alle fehler aus deinem programm, dann laeuft es auch auf jedem rechner.


  • Mod

    hellihjb schrieb:

    bei nen anderen funzt es, nur bei der nvidia nicht

    entferne alle fehler aus deinem programm, dann laeuft es auch auf jedem rechner.

    du bist ja so krass drauf wie TGGC 😮 🤡



  • hellihjb schrieb:

    uebrigens gibt es eine tolle erfindung namens constructor...

    MyClass *blub = new MyClass[100];
    

    Wird da eigentlich für alle 100 Elemente der Constructor aufgerufen?


  • Mod

    xindon schrieb:

    hellihjb schrieb:

    uebrigens gibt es eine tolle erfindung namens constructor...

    MyClass *blub = new MyClass[100];
    

    Wird da eigentlich für alle 100 Elemente der Constructor aufgerufen?

    ja und beim loeschen der destructor



  • hellihjb schrieb:

    bei nen anderen funzt es, nur bei der nvidia nicht

    entferne alle fehler aus deinem programm, dann laeuft es auch auf jedem rechner.

    ich dachte ich muss fehler rein bauen damit es überall gleich läuft -.-

    also soweit hab ich das Problem schon mal begrenzt:

    es betrifft NUR objekte die ich aus einer datei auslesse.

    ich hab also 2 Objekte eines was beim laden erst errechnet wird ( der zylinder aus dem beispiel) und ein objekt was ich aus einer datei laden möchte ...

    auf 2 Rechner werden beide Objekte dargestellt und und auf 2 anderen wird nur das errechnette Objekt dargestellt ...

    ich hab nun auch schon die gesamten vertex positionen ausgegeben - das sah ziemlich normal aus, auf beiden(wo es dargestellt wird und wo es nicht dargestellt wird das selbe)

    ich seh schon ... aufgeben und das Projek von anfang an neuschreiben ... um dann auf den selben Fehler zu warten ... ist wohl nun das beste ... wenn man hier schon keine vernüftigen lösungsansetzte bekommt, "mach deine Fehler raus ..." echt geil 😡 klar mach ich hier und da noch mal paar fehler ... und ihr auch(!) aber die sind ja zum lernen gut 😃
    ich werd das mit werd den fehler mit den 1000(0) in zukunft mit #define max_blubb xxx umgehen.

    ich hab noch nen anderen Fehler gefunden - bei refreshcon() wird zuviel speicher kopiert - hatte gehofft das das mein Problem lösst aber -.-

    zum Thema remote-debugging könnte es sein das nicht mit Express Edition geht ? 😉

    ich bin fest davon überzeugt dass das Problem nicht sooo einfach zu lösen ist (alle array mitglieder auf false setzten...)
    scheinbar hab ich mich ca 10 mal falsch ausgedrückt wo ich gesagt habe das eine wird gerendert (das bedeutet für mich das ich der graka sage zeichne mir diese polygone(Vertexbuffr) aufm bildschirm) das laut HRESULT hr == S_OK [auf deutsch ohne Fehler] bei ATI sichtbar ist und bei nVidia NICHT sichtbar, da ja der screen gelöscht wird (mit einer farbe die mit hilfe von cos/sin errchnet wird )sollte man ja annehmen, dass das Objekt nicht sichtbar ist ...

    ich hate auf antwortengehoft wie du hast das und das (zB alphablending) so und so aktiviert und mit der komibination wirds bei nVidia transparent ,,, aber naja ... vllt sollte ich das mal zu nVidia schicken *G* die wissen da vllt mehr ,,,

    PS kennt wer nen tool was automtisch von diversen datein immer ein backup macht (zeitlich/tasten druck), so das man immer ein backup vom source code hat -.- am besten noch mit differenz...

    ok noch eine frage ... thema unicode:
    #undef unicode funzt nicht bzw weiss ich nicht ob ich das so richtig verstanden hab...

    bei der debugversion kann der compiler von "text" (nur) nach LPCSTR umwandeln und bei der Releaseversion (nur)nach LPCWSTR... bzw kann ich bei der Debugversion immer den text per "text" übergeben und bei der releaseversion nur L"text"



  • LinkeT schrieb:

    klar mach ich hier und da noch mal paar fehler ... und ihr auch

    Und weisste was ich dann mache? Ich setze mich hin und mach sie raus. Und du nicht! f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)



  • TGGC schrieb:

    LinkeT schrieb:

    klar mach ich hier und da noch mal paar fehler ... und ihr auch

    Und weisste was ich dann mache? Ich setze mich hin und mach sie raus. Und du nicht! f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)

    jo sitzt neben mir schaust mir über die schulter und weisst was ich mach/nich mach ... is klar ... fein das du das machst


  • Mod

    🙄 das forum ist um bei problemen zu helfen, nicht beim debuggen, dein ganzes jammern hier bring weder dich weiter, noch jemanden dazu fuer dich zu debuggen. du bist nicht der einzige der mal nen tag an nem bug sitzt und ich seh hier nicht hunderte threads von leuten die trivialbugs geloest bekommen wollen. wenn debugen dein defizit am programmieren ist, dann lern einfach sauberen code zu schreiben, dann ersparst du es dir, nimm eine programmiersprache die dir mehr unterstuetzung bietet z.b. c#,java,VB die mit aus diesem grund gemacht wurden.



  • ich hab ein problem damit das ein Program auf 2 rechnern 2 verschiedene ergebisse liefert - nach meinem Verständnis ist das schlicht weg unmöglich!

    debugen ist nicht min Problem (wie kommt ihr/du da drauf) ich hab schon diverse Fehler von mir schon durch debugen gelöst

    Also noch mal ich wollte nieeemals das einer von euch was von mi debugt (wie oft wurde gesagt ich slle den code posten).
    Ich wollte NUR (nicht mehr, kein bissel) nur einen lösungsansatz (im falle jemand hatte schon das Problem erfolgreich gelöst)...

    scheinbar sind fragen die hier nicht gelöst werden können unangebracht und werden mit dankbaren sprüchen wie "mach deine Fehler raus, dann funktioniert es" kommentiert ... sehr gut ... 👎

    EDIT:

    Nochmal kurz das Problem - 3d objekte werden nicht auf allen PCs gerendert - scheinbar nur auf welchen die ATI grafikkarten haben



  • du bist bereits auf mehrere moegliche fehlerursachen und ansatzpunkte hingewiesen worden.
    anstatt deinen code so umzuschreiben, dass er wenigstens einem mindestmass an funktionstuechtigkeit und stabilitaet entspricht, willst du die hardware fuer deine fehler verantwortlich machen - das ist laecherlich.



  • LinkeT schrieb:

    scheinbar sind fragen die hier nicht gelöst werden können unangebracht und werden mit dankbaren sprüchen wie "mach deine Fehler raus, dann funktioniert es" kommentiert ... sehr gut ...

    Wir wissen das es so sehr gut ist, darum machen wir es ja auch. f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)



  • also bislang gabs nur 3 sachen (wenn ich was nicht übrsehen hab)
    - malloc bevor ich den pointer ändere
    - 1000 und 10000
    - nicht initialisieren von variablen

    malloc hab ich entfernt
    die eine 0 hab ich auch drangehangen
    mit rtlzeromemory hab ich die bools auf false gesetzt

    und hats was gebracht? o vllt hab ich später deswegen wenigerbugs, danke, aber das problem ist immer noch da



  • Ich habs mal bei mir schnell versucht, und nachdem ich von hw vertex processing auf sw vertex processing gewechselt habe (mein nb hat keine richtig 3d graka).
    Bin ich direkt mal auf deinen Cull-Mode gestoßen, wieso verwendest du D3DCULL_FORCE_DWORD als Cull-Mode? Um das Culling abzuschalten verwendet man D3DCULL_NONE.
    Force-Dword ist nur dazu da um die Größe des Enums auf 32Bit zu bringen.
    Würdest du deine Device-Calls alle auf Fehler prüfen, dann wäre dir das viel früher aufgefallen.

    Nachdem ich das behoben habe, sagte mir mein Debugger folgendes:

    Direct3D9: (WARN) :Device that was created without D3DCREATE_MULTITHREADED is being used by a thread other than the creation thread.

    Direct3D9: (ERROR) :Stream 0 does not have required number of vertices

    Und wenn du nicht sofort hingehst und deinen Debugger benutzt und die Debug-Runtime, dann wird dir hier sicher keiner mehr helfen!



  • lolz schrieb:

    Und wenn du nicht sofort hingehst und deinen Debugger benutzt und die Debug-Runtime, dann wird dir hier sicher keiner mehr helfen!

    ach wie gern würd ich ...
    da wo ichs debuggen kann tritt der fehler nicht auf,
    da wo ichs nicht debuggen kann tritt der fehler auf

    ich werds gleich als signatur anbringen^^


  • Mod

    bist du dir sicher dass du verstanden hast was er gesagt hat?
    du sollst D3D in debug einstellen, in der systemsteuerung ist ein setup-program dafuer.

    alternativ gib einfach aus (in dein logfile) was du bei vertexcount beim setzten der streams und beim drawindexedprimiv angibst.



  • DX spuckt beim laufen auch Warnungen raus, d.h. auch auf deinem PC wo du die Developer-Runtime hast könntest du den Fehler finden, indem du alle Warnungen beseitigst.

    Und für andere PCs kannst du sämtliche Fehler in ein Logfile ausgeben indem du _jeden_ Aufruf von einer Funktion die ein HRESULT zurückgibt auf einen Fehler prüfst.

    Das kannst du so machen:

    HRESULT res;
    if( FAILED( ( res = d3d->SetRenderState( D3DRS_ZENABLE, TRUE ) ) ) )
    {
      const TCHAR* str = DXGetErrorString9( res );
      const TCHAR* descr = DXGetErrorDescription9( res );
    
      myLogFile << res << ": " << descr << endl;
    }
    

    Solltest nach jeder Ausgabe die Datei flushen, damit bei einem Absturz nicht irgendwelche Einträge im Nirvana verschwinden, weil sie zwischengespeichert wurden.



  • rapso schrieb:

    bist du dir sicher dass du verstanden hast was er gesagt hat?

    Ja, er ist sich sicher. Das ist das Problem. Er kapiert nix, meint aber schon alles zu koennen. f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)



  • TGGC schrieb:

    rapso schrieb:

    bist du dir sicher dass du verstanden hast was er gesagt hat?

    Ja, er ist sich sicher. Das ist das Problem. Er kapiert nix, meint aber schon alles zu koennen. f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)

    wohl eher hab ich das prblem mich verständlich auszudrücken, zumindest so das es _jeder_ versteht ... ich versteh aber auch nicht was man an der aussage "von 2 objekten wird nur eins gerender, hr(esult) ergibt aber S_OK [überall]" nicht verstehen kann...

    wann hab ich gesagt ich kann alles ... wieder mal nur eine unterstellung ... wer den schaden hat brauch nunmal nicht für spot zusorgen ...

    ich hatte das Problem schon mal - hab nix geändert und weiter gemacht ... und es ging ..

    ich werd mir jetzt die lade routine vornehmen, DA das die einzige routine ist die bei den "objekten" [zusammenfassung von vertexangaben] unterschiedlich bearbeitet wird - warum dort was passiert das auf mehreren PCs (die sich effektiv nur noch durch den grafikkarten "hersteller" [ATI/nVidia] einen unterschiedmacht


  • Mod

    LinkeT schrieb:

    ich hatte das Problem schon mal - hab nix geändert und weiter gemacht ... und es ging ..

    LinkeT schrieb:

    rapso schrieb:

    deine abstuerze kommen daher dass du deine problemen nicht auf den grund gehst,
    sondern die sache so belaesst wie sie ist, solange es laeuft (z.b. "Ohne malloc stürzt das Program (warum auch immer) ab und zwar mit ein Fehler wo hin zu schreiben."), woher willst du wissen dass es nicht dieser fehler ist der trotz allokation auf einer anderen maschine nicht trotzdem den absturz verursacht?

    doch geh ich...

    🙄
    solange du probleme nicht sofort fixt, auch wenn sie zufaellig temporaer gehen, werden sich all deine bugs weiterhin akkumulieren und selbst wenn man dir dann hier weiterin 100dinge zum fixen sagt, werden unmengen bugs drinnebleiben.

    rapso schrieb:

    bist du dir sicher dass du verstanden hast was er gesagt hat?
    du sollst D3D in debug einstellen, in der systemsteuerung ist ein setup-program dafuer.



  • so nun hab ich ein 20 MB grossen logfile jetzt werd ich mir den mal zur hand nehmen ...

    "the function completed successfully kommt da ziemlich häufig vor 😉
    jetzt werd ich das mal "entfernen" mal schaun was übrig bleibt
    EDIT
    ich hab mal d3dDevice->Clear, d3dDevice->BeginScene usw mal ausm log rausgelassen [wenn die nicht S_OK ergeben würd ich ja gar nix sehen]


Anmelden zum Antworten