ClearScreen() ohne Funktion (PB 4.51 / PB 4.60 Beta3)

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

ClearScreen() ohne Funktion (PB 4.51 / PB 4.60 Beta3)

Beitrag von ullmann »

Bei diesem Code hinterlassen die bewegten Kreise Spuren. Obwohl ein ClearScreen(0) in der Schleife drin ist:

Code: Alles auswählen

InitSprite()
InitKeyboard()

Enumeration
  #Window
EndEnumeration

Structure Ball
  x.i
  y.i
  dx.i
  dy.i
  Rot.i
  Gruen.i
  Blau.i
EndStructure

NewList Baelle.Ball()

Macro NeueRichtung
  Repeat
    \dx = Random(4) - 2
    \dy = Random(4) - 2
  Until \dx <> 0 Or \dy <> 0
EndMacro    
  
ExamineDesktops()
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, DesktopWidth(0) - 200, DesktopHeight(0) - 200, "ClearScreen() Test", #PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)

Repeat  
  
  ClearList(Baelle())
  
  WeiteX = WindowWidth(#window)
  WeiteY = WindowHeight(#window)
  For n = 1 To 5
  AddElement(Baelle())
  With Baelle()
    \x = Random(WeiteX - 10) + 5
    \y = Random(WeiteY - 10) + 5
    NeueRichtung
    \Rot=Random(255)
    \Gruen=Random(255)
    \Blau=Random(255)
  EndWith
  Next 
  
  Repeat
    
    ClearScreen(0)
  
    Delay(2)
    If WindowEvent() = #PB_Event_CloseWindow : End : EndIf
    
    ForEach Baelle()
      
      With Baelle()
        \x + \dx
        \y + \dy
        If \x < 5 Or \x > WeiteX - 5 Or \y < 5 Or \y > WeiteY - 5
          NeueRichtung
        EndIf
      EndWith
    Next
  
    StartDrawing(ScreenOutput())
    ForEach Baelle()
      With Baelle()
        Circle(\x, \y, 10, RGB(\Rot,\Gruen,\Blau))
      EndWith
    Next 
    StopDrawing()
  
    FlipBuffers()

    ExamineKeyboard()
    
  Until KeyboardReleased(#PB_Key_Escape)
  
ForEver
Ich habe daraufhin mal im Forum gesucht. Irgendjemand hatte 2009 oder 2010 ein ähnliches Problem mit ClearScreen.
Scheint sich bis heute nichts geändert zu haben. Mit Fehlersuche und Forumsuche habe ich mehrere Stunden vergeudet.
Ich hoffe, jemand zeigt mir, dass der Fehler bei mir liegt.

Windows XP SP 3 PB 4.51
Zuletzt geändert von ullmann am 02.08.2011 04:02, insgesamt 1-mal geändert.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von c4s »

Kann ich mit gleichem Windows XP + PureBasic 4.51 nicht bestätigen.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von Kiffi »

c4s hat geschrieben:Kann ich mit gleichem Windows XP + PureBasic 4.51 nicht bestätigen.
dito mit Vista Business SP2 + PB4.51 und PB4.6B3
a²+b²=mc²
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von Rebon »

Kann ich bestätigen, könnte möglicherweise wieder an Radeon Grafikkarten liegen. Wenn ich im Compiler auf Subsystem DirectX7 umstelle, funktioniert ClearScreen().
PB 4.00 | Windows XP Home SP3
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von STARGÅTE »

nö, habe auch n RADEON und bei mir funktioniert ClearScreen()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von Rebon »

STARGÅTE hat geschrieben:nö, habe auch n RADEON und bei mir funktioniert ClearScreen()
Funktioniert ClearScreen() auch bei dir mit dem Code aus dem verlinkten Beitrag?
http://forums.purebasic.com/german/view ... e39c58bc01

Edit: Jetzt habe ich den leeren Backbuffer nur am Anfang. Und das einzige was ich geändert bzw. installiert habe ist ein neuerer Grafiktreiber.
Zuletzt geändert von Rebon am 29.07.2011 19:11, insgesamt 1-mal geändert.
PB 4.00 | Windows XP Home SP3
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von mpz »

Hi,

tritt bei mir leider auch auf trotz NVidea Grafikkarte. Ich habe ein 3d Sprites dazugepackt und siehe da es funktioniert...

Gruß Michael

Code: Alles auswählen

InitSprite()
InitSprite3D()
InitKeyboard()

Enumeration
  #Window
EndEnumeration

Structure Ball
  x.i
  y.i
  dx.i
  dy.i
  Rot.i
  Gruen.i
  Blau.i
EndStructure

NewList Baelle.Ball()

Macro NeueRichtung
  Repeat
    \dx = Random(4) - 2
    \dy = Random(4) - 2
  Until \dx <> 0 Or \dy <> 0
EndMacro    
  
ExamineDesktops()
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, DesktopWidth(0) - 200, DesktopHeight(0) - 200, "ClearScreen() Test", #PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)

CreateSprite(1, 256, 256, #PB_Sprite_Texture)
CreateSprite3D(1, 1)


Repeat  
  
  ClearList(Baelle())
  
  WeiteX = WindowWidth(#window)
  WeiteY = WindowHeight(#window)
  For n = 1 To 5
  AddElement(Baelle())
  With Baelle()
    \x = Random(WeiteX - 10) + 5
    \y = Random(WeiteY - 10) + 5
    NeueRichtung
    \Rot=Random(255)
    \Gruen=Random(255)
    \Blau=Random(255)
  EndWith
  Next 
  
  Repeat
    
    ClearScreen(0)
    Start3D()
    DisplaySprite3D(1, 1,1)
    
    Delay(2)
    If WindowEvent() = #PB_Event_CloseWindow : End : EndIf
    
    ForEach Baelle()
      
      With Baelle()
        \x + \dx
        \y + \dy
        If \x < 5 Or \x > WeiteX - 5 Or \y < 5 Or \y > WeiteY - 5
          NeueRichtung
        EndIf
      EndWith
    Next
  
    StartDrawing(ScreenOutput())
    ForEach Baelle()
      With Baelle()
        Circle(\x, \y, 10, RGB(\Rot,\Gruen,\Blau))
      EndWith
    Next 
    StopDrawing()
  
    FlipBuffers()

    ExamineKeyboard()
    
  Until KeyboardReleased(#PB_Key_Escape)
  
ForEver
Working on :lol: - LibSGD - MP3D Engine - 8)
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von ullmann »

Was soll das? Ich hatte dies im Forum Bugs gepostet! Wenn ClearScreen den Bildschirm nicht löscht, besteht eine
gewisse Chance, dass es sich um einen Bug handelt, zumindest auf bestimmter Hardware. Dann kann man versuchen
die Ursachen zu finden.

Warum wurde der Thread hierher verschoben? Zumal Bestätigungen vorliegen. Verschoben innerhalb von nur einem (!) Tag.
Da kann das Bugforum geschlossen werden, wenn dort keine Hinweise erwünscht sind. Es drängt sich mir der Verdacht auf,
dass durch Vertuschen / Verstecken PureBasic eine weißere Weste erhalten soll. Das ist unseriös.


Danke an alle, die sich die Mühe machen, ihre Testergebnisse zu posten. Wenn ein Programmierfehler meinerseits ausgeschlossen werden kann,
- ich bin mir da noch nicht so sicher, weil ich nur gelegentlich programmiere - sollte dieses unregelmäßige Verhalten von ClearScreen vielleicht
mal im englischen Bugforum gepostet werden. Ohne Information kann es keine Verbesserung geben. Gepostete Bugs sind nicht böse gemeint,
als Anwender hofft man aber auf eine Beseitigung, damit man leichter und schneller programmieren kann.

Rainer Ullmann

Edit: Habe es im englischen Forum gepostet.
Zuletzt geändert von ullmann am 30.07.2011 15:26, insgesamt 1-mal geändert.
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von ullmann »

Ich habe eine Nvidia GeForce 8600 GT.

@rebon: Hmm, ich weiß nicht, im ersten Testcode ist das Bild 3 Sekunden schwarz - dies könnte aber auch die
Umschaltung auf Fullscreen sein -, dann wird kontinuierlich "Bla Bla" auf türkis angezeigt. Bei einem Test aus dem
gleichen Link, aber weiter hinten, wird "Basic6", dann "Basic8", dann "Basic10" usw. angezeigt.

@mpz: Wie bist du denn auf diese Idee mit dem Sprite3D gekommen? Damit funktioniert es bei mir auch. Ist aber
sehr, sehr komisch.

Gruß
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: ClearScreen() ohne Funktion (PB 4.51)

Beitrag von cxAlex »

Kein Fehler hier bei mir, sowohl PB 4.51 als auch 4.6b3 (beide x64). Win7, NVidia Gforce GTX 260M

//Edit: Und auf einer 7300 SE/7200 GS läuft das ganze auch super. Win 7 Ultimate, x64

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten