(Bug ungelöst) OpenWindow? Bug oder Funktion?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

(Bug ungelöst) OpenWindow? Bug oder Funktion?

Beitrag von tft »

Hallo,

folgenden Code Zeilen öffnen ein Fenster, und platzieren darin einen Screen.

Code: Alles auswählen

Debug "Open Window and 3D Screnn"

HWND = OpenWindow(#MainWindow,10,0,#ScreenX,#ScreenY,"MineCraftClone V 003, by TFT",#PB_Window_SystemMenu | #PB_Window_SizeGadget    )
If  HWND  = 0 : MessageRequester("InitMainWIndow", "Cant init", #PB_MessageRequester_Ok) : End : EndIf
If OpenWindowedScreen(WindowID(#MainWindow),0,0,#ScreenX,#ScreenY,#True,0,0,#PB_Screen_WaitSynchronization  ) = 0 : MessageRequester("InitMainWIndow", "Cant init", #PB_MessageRequester_Ok) : End : EndIf
Laut Hilfe, ist der 6. Parameter, den ich auf #True setze, dafür da. Um beim verändern der Fenster Grösse. Den Screen mit anzupassen.
Funktioniert nur leider nicht. Muss das so sein ???? mache ich was falsch oder ist das ein Bug????

dabei funktioniert diese Demo schon.

Code: Alles auswählen

 If InitSprite() = 0
    MessageRequester("Error", "Can't open screen & sprite environment!", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 420, 200, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
    CreateStatusBar(0, WindowID(0))
      AddStatusBarField(420)
      
    StatusBarText(0, 0, "Automatically zoomed screen area when changing window size...")
    
    If OpenWindowedScreen(WindowID(0), 0, 0, 420, 200, #True, 0, 20)
  
      CreateSprite(0, 50, 50) ; Erstellt ein leeres Sprites, dies wird komplett schwarz sein
        
      Repeat
        ; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
        ;
        Repeat
          Event = WaitWindowEvent(10)
          
          If Event = #PB_Event_CloseWindow
            End
          EndIf
        Until Event = 0
        
        FlipBuffers()
        ClearScreen(RGB(0, 0, 200)) ; Ein blauer Hintergrund
        
        DisplaySprite(0, 10, 10)  ; Darstellung unserer schwarzen Box in der linken oberen Ecke
        DisplaySprite(0, 260, 10) ; Darstellung unserer schwarzen Box in der rechten oberen Ecke
      ForEver
      
    Else
      MessageRequester("Error", "Can't open windowed screen!", 0)
    EndIf
  EndIf

Gruss TFT

// Edit: Habe mal die inflationär verwendeten Satzzeichen im Titel reduziert. (Kiffi)
Zuletzt geändert von tft am 13.03.2020 09:24, insgesamt 1-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Benutzeravatar
Bisonte
Beiträge: 2474
Registriert: 01.04.2007 20:18

Re: OpenWindow ???? Bug oder Funktion ??

Beitrag von Bisonte »

Der erste Code ist nicht ausführbar... da fehlt so einiges : Eventloop, InitSprite ... Konstantendeklaration... Schwer zu sagen wo dein Fehler sitzt.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: OpenWindow ???? Bug oder Funktion ??

Beitrag von tft »

Hallo,

???? iss ja wohl klar. Ich habe nur den teil gepostet. Um anzudeuten um was es geht.

Denkt euch eine normale Main schleife mit Event Handling. :-) Da im Beispiel und der
Erklärung nicht darauf eingegangen wird, das es weitere Maasnahmen bedarf. Reichen 6 Zeilen.

Code: Alles auswählen

EnableExplicit

Define Quit, Event

If InitEngine3D() = 0
  MessageRequester("Error", "Can't init Engine3D ", 0) :  End
EndIf

If InitSprite() = 0
  MessageRequester("Error", "Can't open screen & sprite environment!", 0) :  End
EndIf

If OpenWindow(0, 0, 0, 420, 200, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  CreateStatusBar(0, WindowID(0))
  AddStatusBarField(420)
  
  StatusBarText(0, 0, "Automatically zoomed screen area when changing window size...")
  
  If OpenWindowedScreen(WindowID(0), 0, 0, 420, 200, #True, 0, 20)
    
    Define Cam = CreateCamera(#PB_Any,0,0,100,100)
    MoveCamera(Cam,0,0,5)
    CameraBackColor(Cam,RGB(50,50,50))
    CameraFOV(Cam,50)
    CameraRange(Cam,0.01,10000)
    
    AmbientColor(RGB(255,255,255))
    
    Define EntMesh = CreateCube(#PB_Any,1)
    Define EntEnt = CreateEntity(#PB_Any,MeshID(EntMesh),0,0,0,0)
    
    CreateSprite(0, 50, 50) ; Erstellt ein leeres Sprites, dies wird komplett schwarz sein
    
    Repeat
      
      Event = WindowEvent()
      While Event <> 0
        If Event = #PB_Event_CloseWindow
          quit = 1
        EndIf
        Event = WindowEvent()
      Wend
    
      RotateEntity(EntEnt,0.1,0.2,0.3,#PB_Relative)
      
      RenderWorld()
      
      DisplaySprite(0, 10, 10)  ; Darstellung unserer schwarzen Box in der linken oberen Ecke
      DisplaySprite(0, 260, 10) ; Darstellung unserer schwarzen Box in der rechten oberen Ecke
      
      FlipBuffers()
      
    Until quit = 1
    
    
  Else
    MessageRequester("Error", "Can't open windowed screen!", 0)
  EndIf
EndIf

End
ich habe das Funktionirende Beispiel um 3D Erweitert.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
DePe
Beiträge: 194
Registriert: 26.11.2017 16:17

Re: OpenWindow ???? Bug oder Funktion ??

Beitrag von DePe »

Also bei mir wird der Inhalt bzw. der Screen skaliert. PB 5.72b2 32-Bit / Win 7 64-Bit.

Peter
Benutzeravatar
Bisonte
Beiträge: 2474
Registriert: 01.04.2007 20:18

Re: OpenWindow ???? Bug oder Funktion ??

Beitrag von Bisonte »

Wenn man InitSprite3D nicht benutzt dann funktioniert es ! (natürlich alle 3D sachen ausklammern)

Wenn man DirectX als subsystem angibt, kann Init3D Engine nicht initialisiert werden...

Ich denke mal das dieses in die Bug Sektion gehört, weil ich mir vorstellen kann, das es funktionieren soll.

P.S.: Und wie du siehst, war der Krempel drumrum doch wichtig ;)
Zuletzt geändert von Bisonte am 10.03.2020 18:31, insgesamt 1-mal geändert.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
HeX0R
Beiträge: 3056
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: OpenWindow? Bug oder Funktion?

Beitrag von HeX0R »

Scheint aber nur x64 zu betreffen, unter x86 läuft das Beispiel genau so.

Und vielen Dank an den Mod, der einige (leider nicht alle) der dämlichen Fragezeichen in diesem Beitrag entfernt hat!
Benutzeravatar
Bisonte
Beiträge: 2474
Registriert: 01.04.2007 20:18

Re: OpenWindow? Bug oder Funktion?

Beitrag von Bisonte »

Ah moment, das mit der beta 2 hab ich übersehen....

Da läufts bei mir tadellos ! beide PB 5.72b2(x86 und x64) auf Win10Pro x64...

Also war es bei der 5.71 etwas fehlerhaft ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: OpenWindow? Bug oder Funktion?

Beitrag von tft »

// Edit: Habe mal die inflationär verwendeten Satzzeichen im Titel reduziert. (Kiffi)

ok ...... sollte meine Verwunderung über das nicht funktionieren zum ausdruck bringen.

Werde mir mal die Beta 2 von 5.72 besorgen.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: OpenWindow? Bug oder Funktion?

Beitrag von tft »

Hallo,

tja ..... nach der neu Installation von PB, kann er die Engin nicht mehr inizialisieren. Das liegt aber sicher an etwas, das ich nicht bedenke. Da die Demos alle einwandfrei
laufen. Muss ich in den Compiler einstellungen etwas ändern ? Denn die Engine.dll ist nicht mehr dort wo sie sonst zu finden war. Dort gibts jetzt eine Ausführbare Datei mit 30 K Grösse.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
DePe
Beiträge: 194
Registriert: 26.11.2017 16:17

Re: OpenWindow? Bug oder Funktion?

Beitrag von DePe »

Unter "\PureBasic 5.72\Compilers\" gibt es die Engine3D.dll, 2,5 MB oder 11 MB. Die muss du zu deinem Programm kopieren, je nach 32- oder 64-Bit.

Peter
Antworten