Seite 1 von 2

Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr.h)

Verfasst: 26.09.2018 10:05
von xdes
Moin,
ich hoffe hir ist die frage richtig...

da ich mir nicht sicher bin wollte ich mal fragen wo genau purebasic aufhört / wo ogre 3d anfängt.

meine Vermutung ist aktuell das die Engine3D.dll purebasic der richtige Kontakt ist ... aber wann ist dann ogre der richtige Kontakt?

den aktuell habe ich diverse Probleme und frage mich ob es evtl dafür Lösungen gibt die ich nicht einfach finde .....

z.b. ein Fehler beim nutzen von 3D Sachen (aber nur manchmal (gefühlt zufällig) beim gleichen code...)...

Code: Alles auswählen

titel: Microsoft Visual C++ Runtim Library
typ: X (erreor logo)

Programm: C:\Programm Files\PureBasic\compilers\engine3D.dll
File:
c:\purepasic\svn\v5.60\ogre\ogremain\...\pgreScharedPtr.h
Line: 160

Expression: pRep

...... 
dazu habe ich den link gefunden ...
(nutzen auf eigen Gefahr) https://www.purebasic.fr/english/viewto ... 13&t=68413
da ich aber Windows 10 habe mit dx 12 und das grade überprüft habe so wie aktuelle Treiber usw ...

hilft mir das irgendwie nicht

dazu habe ich im bereich Threads Probleme das die 3D Sachen in Thread´s ignoriert werden


nun habe ich zusätzlich noch das problem ... das ich mich frage habe ich den Fehler geschaffen durch ein Fehler im code oder wie kommt der zustanden (wobei mich dabei irritiert das ms Visual C++ da im titel steht)

und das Datei unter File bei mir nicht existiert...

da bei Bugs wenn ich das richtig verstandenen habe gewisse angaben gemacht werden sollten... (z.b. falls es verschoben werden sollte oder falls es hilft ...)


PB-Version: PureBasic(demo) 5.62(x64) (auf windows )
OS: Windows 10 64bit
Compilereinstellungen:
[x] InlineASM Syntax-Einfärbung einschalten
[?] Unicode-Executable erstellen
[x] Thread-sicheres Executable erstellen
[x] OnError-Unterstützung einschalten
[x] Moderne Themen-Unterstützung aktivieren (für Windows XP und höher)
[ ] Administrator-Modus für Windows Vista und höher anfordern
[ ] User-Modus für Windows Vista und höher anfordern (keine Virtualisierung)
Library Subsystem:[leeres Feld]

Error taucht nicht bei jeden starte auf aber gefühlt jedes 2te mal ....
Laut Darstellung (was der Debugger anzeigt an eingefärbten Daten (ich glaube aber nicht das es das problem ist))

(minimaler Code(glaube nicht das es das echte problem ist )

Code: Alles auswählen

For i=1 To map_kacheln
  For ii=1 To map_kacheln
    Debug "mi1"
    LockMutex(map_loc)
    Debug "mi2"
    UnlockMutex(map_loc)
  Next
 Next
ps: tut mir leid wenn der text schwer zu verstehen ist ich versuche es so gut wie möglich (ich bin leider nicht so gut in der Schreibweise) (warum ich das nicht unter Bugs schreibe? ... ich weis nicht ob es zu pb gehört ... und ich weis nicht ob es reichen würde das dann in diesem Forum zu schreiben...?) des weitern kann man eigentlich irgendwo sehen ob der bug behoben worden ist ? wenn man einen findet (gibt es ein Version´s log oder so? )?

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 26.09.2018 12:42
von man-in-black
Hi,

ich tippe ganz stark auf ein Problem durch die Threads.
Leider musste ich in der Vergangenheit auch feststellen,
dass ogre nur im Hauptthread lauffähig ist.
Sobald Threads ebenfalls ogre Funktionen nutzen,
kommt es im Speicher manchmal zu Schreibkollisionen.
Das äußert sich dann durch zufällige Absturze.

MFG
MIB

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 30.09.2018 18:26
von xdes
vielen dank man in black
(soory das ich erst jetzt antworte )


das ist, finde ich, echt traurig...

ich hatte wenigstens gehofft das der Netzwerk bereich bei 3D Sachen nicht im haupt bereich laufen müsste so wie die Eingabe abfrage...



gibt es schon irgendwelche Information wann es sich ändert ? (muss ich das noch mal wo schreiben in einem Forum oder so ... )

und gibt es eine stelle wo ich den status dazu sehen kann ( oder wenigstens wenn es fertig ist ?)?

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 30.09.2018 20:26
von xdes
hi,
ergänzend zu den anderen da mir das grad erst wider eingefallen ist ....

zu einen anderen Engiene3D.dll error Meldung...
habe eine Lösung (falls wer braucht....)

Code: Alles auswählen

titel: Microsoft Visual C++ Runtim Library
typ: X (erreor logo)

Programm: C:\Programm Files\PureBasic\compilers\engine3D.dll
File: OgreTerrainQuadTreeNode.cpp
Line: 101

Expression: lod ==(ownLod -1) && "The lod passed in 
schould reflect the number of "" lods in a leaf"

...... 
(dies ist ein anderer error wo ich eine Lösung zu nenne kann als der erste Eintrag)
ich konnte den error mit line 101 beheben in dem ich die Terrain Größe geändert habe ... z.b. 8 geht 9 geht nicht(eine ide oder debugger error Meldung die das verständlicher macht wäre mir lieber gewesen ..)

ps: ich hoffe es hilft wem ...

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 30.09.2018 22:08
von man-in-black
Hi,

alles, was nichts mit ogre zu tun hat,
kannst du in Threads auslagern (network, ... ).
Du müsstest dir nur für die ogre-befehle ein workaround überlegen. ;)

MFG
MIB

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 01.10.2018 09:28
von mk-soft
Aus dem Thread mit PostEvent befehle an dem MainScope schicken.
So in der Art wie mein ThreadToGUI...

Struktuell könnte es so aussehen...

Code: Alles auswählen

;-TOP

CompilerIf #PB_Compiler_Thread = 0
  CompilerError "Use Compiler-Option ThreadSafe"
CompilerEndIf

Enumeration CustomEvent #PB_Event_FirstCustomValue
  #MyEventOgre
EndEnumeration

Structure udtOgreData
  signal.i
  s1.s
  v1.i
  v2.i
EndStructure

Structure udtThreadData
  ThreadID.i
  Exit.i
  ; Data
EndStructure

Procedure DoEventOgreData()
  Protected *data.udtOgreData
  *data = EventData()
  If *data
    With *data
      Debug \s1
      Debug \v1
    EndWith
    If *data\signal
      SignalSemaphore(*data\signal)
    Else
      FreeStructure(*data)
    EndIf
  EndIf
EndProcedure

Procedure thWork(*data.udtThreadData)
  Protected *send.udtOgreData  
  Debug "Start Thread..."
  While Not *data\Exit
    *send = AllocateStructure(udtOgreData)
    *send\s1 = "ThreadID " + *data\ThreadID 
    *send\v1 = Random(100)
    PostEvent(#MyEventOgre, 0, 0, 0, *send)
    Delay(500)
  Wend
  Debug "Stopped Thread."
EndProcedure

Procedure thWorkSignal(*data.udtThreadData)
  Protected *send.udtOgreData  
  Debug "Start Thread with Signal..."
  *send = AllocateStructure(udtOgreData)
  *send\signal = CreateSemaphore()
  While Not *data\Exit
    *send\s1 = "ThreadID with Signal" + *data\ThreadID 
    *send\v1 = Random(100)
    PostEvent(#MyEventOgre, 0, 0, 0, *send)
    WaitSemaphore(*send\signal)
    Delay(1000)
  Wend
  FreeSemaphore(*send\signal)
  Debug "Stopped Thread with Signal."
EndProcedure

Global th1.udtThreadData
Global th2.udtThreadData

Procedure Main()
  Protected ExitTime
  
  BindEvent(#MyEventOgre, @DoEventOgreData())
  
  th1\ThreadID = CreateThread(@thWork(), th1)
  th2\ThreadID = CreateThread(@thWorkSignal(), th2)
  
  If OpenWindow(0, 100, 100, 400, 240, "Test", #PB_Window_SystemMenu)
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    ForEver
    
  EndIf
  
  ; Stop Thread
  If IsThread(th1\ThreadID)
    th1\Exit = 1
  EndIf
  If IsThread(th1\ThreadID)
    th2\Exit = 1
  EndIf
  ExitTime = ElapsedMilliseconds()
  Repeat
    WaitWindowEvent(100)
    If ElapsedMilliseconds() - ExitTime > 1500
      Break
    EndIf
  ForEver
  ; Kill blocking Thread
  If IsThread(th1\ThreadID)
    KillThread(th1\ThreadID)
  EndIf
  If IsThread(th2\ThreadID)
    KillThread(th2\ThreadID)
  EndIf
  
EndProcedure : Main()
P.S.
Um ein Rückgabewert an dem Thread zu übergeben habe ich irgendwann ein SendEvent geschrieben
viewtopic.php?f=8&t=26219

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 01.10.2018 13:17
von xdes
soory das wieder erst so spät antworte (ich hoffe das ist nicht schlimm)

@man in black
vielen dank man in black ,leider tauchen bei mir die Probleme auch in nicht 3d Threads auf(und dort vermutlich nur wenn ich ich die 3d engien initialisiere... wo for oder debug Elemente drin sind die etwas größer sind (vermutlich <c.a 50MB ) und das gefühlt auch erst wenn ich in einer for schleife auf die Größe komme.... (ich vermute das mein problem mit der ram Verwaltung zutun hat... so das ogre versuch aus dem falschen speicher zu lesen.... oder feste Parameter die in pb nicht beachtet werden ...)(es war mein erster versuch alles in andere Threads bis auf ogre zu setzen ... was leider nichts gebracht hat... ich glaube ich muss das ganze Projekt aus einer ganz anderen Sicht angehen ... (da ich auch in anderen bereichen festgestellt habe (z.b. beim server script .... das ich da einiges mit mehr Performance machen kann)

@mk-soft
vielen dank für die Antwort aber
:oops: tut mir leid, ich glaube ich habe dich nicht verstanden. :oops:
ich vermute aber das du damit eine art berechnen, der Logical oder andere Sachen meinst; und im Hauptteil dann nur 3d Sachen (beim Server und bei allen anderen test varianten lief sowas super weswegen ich das auch verwendet habe nur leider nicht mehr mit ogre ... (das ist bei mir die erste variante gewesen war bevor ich etwas in die 3d engien geladen hatte) aber ich glaube ich habe dich nicht verstanden magst du das noch einmal genauer erklären ? :oops:

@all wieder ...

ich würde zwar gerne wissen was ich machen könnte
aber ich glaube es ist das beste wenn ich das ganze Projekt mit einer anderen Sicht anfange :cry:

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 01.10.2018 14:00
von man-in-black
Hi,

um die Sache abzukürzen: Lass mal jemand anderes in den Code gucken.
Das ist aktuell alles nur rumgerate. Ich unterstelle dir zwar nicht, Fehler gemacht zu haben,
aber oftmals sind es die kleinen Flüchtigkeitsfehler, die den Ärger machen. ;)

MFG
MIB

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 03.10.2018 12:28
von xdes
vielen dank man in black

da der code naja ... :oops: aussieht...

und da mir grad noch neue Probleme im 3d bereich aufgetreten sind (z.b. 1 weißer flecken eindimensional in der Mitte der tile ) würde ich dir lieber das ganze per pn oder Chat oder so senden (so das man sich schneller austauschen kann ..und direkt ( und das nicht unbedingt jeder ... ... lacht wegen der Schreibweise... :oops: )

wäre so was möglich ?

ps/edit: ich habe nun heraus bekommen das der weise flecken von den WorldShadows kommt ...

Re: Bugs wan Oger wan purebasic ? (windows10)(pgreScharedPtr

Verfasst: 07.10.2018 14:15
von PMV
Noch nen kleiner Zusatz am Rande:
Welche DX12 Version deine Grafikkarte als höchste Unterstützt spielt keine Rolle, wenn die Software nur DX9.0c kann.
PureBasic-OGRE unterstüzt aktuell kein höheres DX und genau daraus ergibt sich das Problem mit den Threads.
Als Faustregel gibt: alle Grafik-Funktionen müss im selben Thread aufgerufen werden. Vom Initialisieren bis schließen, wenn du so willst.
Das ist eine Limitierung von DX9.

Wenn du mit Threads noch nicht viel am Hut hast, würde ich dir Raten erst mal dich mit dem Thema allein zu beschäftigen.
PureBasic-OGRE hat sehr viele Fallstrike, die für sich schon anstrengend genug werden können :D

MFG PMV