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

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

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

Beitrag 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? )?
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

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

Beitrag 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
(hab alles, kann alles, weiß alles!!^^)

Bild
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

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

Beitrag 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 ?)?
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

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

Beitrag 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 ...
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

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

Beitrag 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
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

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

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

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

Beitrag 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:
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

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

Beitrag 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
(hab alles, kann alles, weiß alles!!^^)

Bild
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

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

Beitrag 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 ...
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

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

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten