Flackern beim Draw in 3D WindowScreen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Flackern beim Draw in 3D WindowScreen

Beitrag von tft »

Hallo,

ich habe da eine Sache. die mir total suspekt erscheint. Ich habe diesen kurzen ausschnitt aus meine Code.

Code: Alles auswählen

    ; Get Kabinen Position
    LockMutex(KabineMutex)
      KabinenPosition = KabinenPositionY
    UnlockMutex(KabineMutex)
    
    MoveNode(kabineAnkerAufzug1,0.0,KabinenPosition,0.0,#PB_Absolute)
    RotateNode(cameraAnkerAufzug1,0.0,CameraAnkerDrehung.f,0.0,#PB_Absolute)
    MoveCamera(camera_1,0.0,0.0,CameraEntfernung,#PB_Absolute)
    
    RenderTime = RenderWorld()
    
    ;LockMutex(AnzeigeMutex)
    ;If AnzeigeKabinenPosition <> 0
    StartDrawing(WindowOutput(#Fenster3D_1))
      DrawingFont(FontID(font))
        ;DrawAlphaImage(ImageID(AnzeigeKabinenPosition),0,0,215) 
      DrawingMode(#PB_2DDrawing_Default)
      RoundBox(262,12,220,140,9,9,RGB(255,255,255))
      DrawText(262+5,12+4,Str(Abs(KabinenPosition*1000)),RGB(0,0,0),RGB(255,255,255))
      StopDrawing()        
    ;EndIf
    ;UnlockMutex(AnzeigeMutex)
    
    FlipBuffers()
Dieser abschnitt befindet sich in einem RenderThread. Der nur für die Darstellung der 3D Objekte zuständig ist.

Code: Alles auswählen

OpenWindow(#Fenster3D_1,DesktopX(#DisplayDesktop),DesktopY(#DisplayDesktop),DesktopWidth(#DisplayDesktop),DesktopHeight(#DisplayDesktop),"3D_Arbeitsfenster",#PB_Window_BorderLess )
Define screen = OpenWindowedScreen(WindowID(#Fenster3D_1),0,0,DesktopWidth(#DisplayDesktop),DesktopHeight(#DisplayDesktop),0,0,0,#PB_Screen_SmartSynchronization )

ShowCursor_(#False)
ReleaseState = #False

cameraAnkerAufzug1 = CreateNode(#PB_Any,0,0,0)
kabineAnkerAufzug1 = CreateNode(#PB_Any,0,0,0)
schachtAnkerAufzug1 = CreateNode(#PB_Any,0,0,0)

camera_1 = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(camera_1,RGB(0,0,40))
AmbientColor(RGB(255,255,255))
AttachNodeObject(cameraAnkerAufzug1,CameraID(camera_1))
AttachNodeObject(kabineAnkerAufzug1,NodeID(cameraAnkerAufzug1))
MoveCamera(camera_1,0,0,5,#PB_Parent)
Und so wurde das Fenster Initialisiert. Aus meiner Sicht sollte es kein Problem darstellen, DrawBox an der Stelle so auszuführen.
Allerdings verzeichne ich da erhebliche Störungen. Das Flackert nu so rumm, als wenn die das Draw auf einem Durchsichtigen Fenster
über dem Screen ausgeführt wird. Anstatt auf dem Screen selber. Den Screen zum zeichnen selber übergeben geht ja nich. Da dieser ja
in der Konstellation nicht existiert.

Jemand ne Idee ?????

Please help

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Flackern beim Draw in 3D WindowScreen

Beitrag von tft »

Hallo,

nach etlichem testen habe ich zu mindestens herausgefunden. Das ScreenOutput() nicht mit Engine3D zusammen funktioniert.
Was muss ich machen wenn ich auf den 3D Screen direkt etwas ausgeben will. Ich benutze PB 5.73

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
PornosDias vanBoston
Beiträge: 9
Registriert: 18.11.2019 20:12

Re: Flackern beim Draw in 3D WindowScreen

Beitrag von PornosDias vanBoston »

Hugh.

Ist das jetzt noch aktuell, oder hast du den Fehler gefunden?

Wenn ich RenderWorld() nach StopDrawing() im Thread einsetze, dann flackert es nicht.

Das "ScreenOutput()" ( OpenScreen ) Jedöns liegt wohl daran, dass der Screen im Fenster geöffnet ist ( OpenWindowedScreen() )

Somit sollte deine WindowID richtig sein. ( WindowID(#Fenster3D_1)

Wenn man nicht auf "Tastatursteuerung" steht, sollte man "OpenScreen" sowieso nicht benutzen.
Grausam, dass nach 20 Jahren Pure-Ogre nur der "TaharezLook" dazu funktioniert.

" Dein Auto hat nur 3 Räder? Ja, das vierte muss ich mir selbst bauen.......funktionieren wird es trotzdem nicht. "

Jrüsskes
PDvB
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Flackern beim Draw in 3D WindowScreen

Beitrag von tft »

Hallo,

danke für deinen Input. Das Problem konnte ich bis jetzt nicht lösen. Aber ich habe festgestellt , das Draw befehle auf einem WindowedScreen so nicht funktioniert.
Da sich die Refresh Rate vom Fenster irgendwie vom Screen Unterscheidet. Also habe ich in meinem MineCraftClon nachgeschaut wie ich das mal umgangen habe. Sprites ........ eine Sache die ich noch aus den AMIGA Zeiten kenne.
Und das man beim Programmieren die meiste Zeit damit befasst ist. Probleme zu umgehen .....

Auf jedenfall werde ich die Technische Simulation. Wenn ich sie dann soweit habe. Hier mal posten.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten