Seite 4 von 4

Re: ClearScreen() ohne Funktion (PB 4.51)

Verfasst: 01.08.2011 23:17
von ts-soft
@Falco
Weiß zwar nicht was es bringen soll, aber vielleicht sind ja interessante Infos für Dich bei.
DxDiag.txt hat geschrieben:------------------
System Information
------------------
Time of this report: 8/1/2011, 23:13:32
Machine name: THOMAS-PC
Operating System: Windows 7 Ultimate 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.110408-1631)
Language: German (Regional Setting: German)
System Manufacturer: System manufacturer
System Model: System Product Name
BIOS: BIOS Date: 06/11/10 Ver: 08.00.14
Processor: AMD Athlon(tm) 64 X2 Dual Core Processor 6000+ (2 CPUs), ~3.0GHz
Memory: 4096MB RAM
Available OS Memory: 4096MB RAM
Page File: 2161MB used, 6027MB available
Windows Dir: C:\Windows
DirectX Version: DirectX 11
DX Setup Parameters: Not found
User DPI Setting: Using System DPI
System DPI Setting: 96 DPI (100 percent)
DWM DPI Scaling: Disabled
DxDiag Version: 6.01.7601.17514 64bit Unicode

------------
DxDiag Notes
------------
Display Tab 1: No problems found.
Sound Tab 1: No problems found.
Sound Tab 2: No problems found.
Input Tab: No problems found.

--------------------
DirectX Debug Levels
--------------------
Direct3D: 0/4 (retail)
DirectDraw: 0/4 (retail)
DirectInput: 0/5 (retail)
DirectMusic: 0/5 (retail)
DirectPlay: 0/9 (retail)
DirectSound: 0/5 (retail)
DirectShow: 0/6 (retail)

---------------
Display Devices
---------------
Card name: NVIDIA GeForce GTS 250
Manufacturer: NVIDIA
Chip type: GeForce GTS 250
DAC type: Integrated RAMDAC
Device Key: Enum\PCI\VEN_10DE&DEV_0615&SUBSYS_00000000&REV_A2
Display Memory: 2287 MB
Dedicated Memory: 495 MB
Shared Memory: 1791 MB
Current Mode: 1680 x 1050 (32 bit) (60Hz)
Monitor Name: PnP-Monitor (Standard)
Monitor Model: SyncMaster
Monitor Id: SAM037C
Native Mode: 1680 x 1050(p) (59.883Hz)
Output Type: DVI
Driver Name: nvd3dumx.dll,nvwgf2umx.dll,nvwgf2umx.dll,nvd3dum,nvwgf2um,nvwgf2um
Driver File Version: 8.17.0012.7533 (English)
Driver Version: 8.17.12.7533
DDI Version: 10
Driver Model: WDDM 1.1
Driver Attributes: Final Retail
Driver Date/Size: 5/25/2011 09:25:23, 15223912 bytes
WHQL Logo'd: n/a

Re: ClearScreen() ohne Funktion (PB 4.51)

Verfasst: 01.08.2011 23:29
von Falko
WHQL Logo'd: n/a

Vielleicht bringst dir ja was.

http://de.wikipedia.org/wiki/Windows_Ha ... ality_Labs

Gruß Falko

Re: ClearScreen() ohne Funktion (PB 4.51)

Verfasst: 01.08.2011 23:40
von ts-soft
Wenn Du genauer guckst, siehst Du das ich Haargenau denselben NVidia Treiber habe wie Du und der ist
WHQL-Zertifiziert (NVidia kann solche Zertifikate bezahlen :mrgreen: )

Re: ClearScreen() ohne Funktion (PB 4.51)

Verfasst: 01.08.2011 23:43
von ullmann
Also, ich habe jetzt ClearScreen(0) durch Box(0,0,Breite,Hoehe,0) ersetzt.

Damit funktioniert es perfekt. :)

Und Box() ist ungefähr genauso schnell wie ClearScreen(). Hätte ich gar nicht gedacht.

Dieser Geschwindigkeitstest läuft bei mir ca. 33 Sekunden:

Code: Alles auswählen

InitSprite()
InitKeyboard()

Enumeration
  #Window
EndEnumeration

  
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)

  
  Width_X = WindowWidth(#window)
  Width_Y = WindowHeight(#window)
  
  start = ElapsedMilliseconds()
  
  For i = 1 To 1000
    
    ClearScreen(0)
      
    StartDrawing(ScreenOutput())
    
    ;Box(0,0,Width_X,Width_Y,0)
    
    StopDrawing()
  
    FlipBuffers()

  Next
  
  time_cs = ElapsedMilliseconds() - start
  
  start = ElapsedMilliseconds()
  
  For i = 1 To 1000
    
    ;ClearScreen(0)
      
    StartDrawing(ScreenOutput())
    
    Box(0,0,Width_X,Width_Y,0)
    
    StopDrawing()
  
    FlipBuffers()

  Next
  
  time_box = ElapsedMilliseconds() - start
  
  MessageRequester(" ", "Time for 1000 ClearScreen: " + Str(time_cs) + " ms" + #CRLF$ + "Time for 1000 Box: " + Str(time_box) + " ms")
  
  End

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

Verfasst: 03.08.2011 16:19
von ullmann
Und Box() ist ungefähr genauso schnell wie ClearScreen(). Hätte ich gar nicht gedacht.
Hier bin ich einem Fehler aufgesessen. Das gilt nur bei Bildschirmsynchronisation.

Ändert man den OpenWindowedScreen() in

Code: Alles auswählen

OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0, #PB_Screen_NoSynchronization)
so benötigt Box() fast die doppelte Zeit wie ClearScreen().

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

Verfasst: 16.08.2011 23:18
von ullmann
Ich kam auf die Idee, am Anfang des Codes, nach dem Öffnen des Fensters, zu testen, ob ClearScreen(0) funktioniert
und später in Abhängigkeit des Testergebnisses entweder ClearScreen(0) oder Box(... , 0) aufzurufen.

Dazu gab ich innerhalb eines extra Start/StopDrawing - Blocks einen Plot(1,1,1) Befehl - das Ergebnis ist ja mit bloßem Auge nicht
sichtbar. Nach diesem Drawing-Block setzte ich einen ClearScreen(0) Befehl und in einem weiteren Drawing-Block den Farbtest
Debug Point(1,1). Ausgabe 0 würde bedeuten, auf Position 1,1 ist die Farbe 0, also ClearScreen hat funktioniert; Ausgabe 1 würde
bedeuten, es ist die Farbe vom Plot-Befehl noch da, ClearScreen hätte also nicht funktioniert.

Und? Überraschung! Die Ausgabe war 0, ClearScreen hat funktioniert! (Jedoch nicht in der Schleife, die die Kreise zeichnet). Aber
warum hat ClearScreen funktioniert, wo liegt der Unterschied? Richtig - Plot ist nicht Circle.

Also ersetzte ich den Plot-Befehl durch einen Circle-Befehl - und siehe da: ClearScreen funktionierte nicht.

Im dritten Versuch gab ich beide Befehle an, sowohl Plot als auch Circle (natürlich an verschiedenen x,y Positionen). Und ClearScreen
funktionierte wieder. (Wohlgemerkt im Testblock, noch nicht in der Schleife).

Ich entfernte den Testblock (also die beiden extra Start/StopDrawing-Blöcke und den ClearScreen Befehl) und setzte Plot(1,1,1) direkt in
die Schleife, die die Kreise zeichnet.

Code: Alles auswählen

  StartDrawing(ScreenOutput())
    Plot(1,1,1)
    ForEach Baelle()
      With Baelle()
        Circle(\x, \y, 10, RGB(\Rot,\Gruen,\Blau))
      EndWith
    Next 
  StopDrawing()
Tja, und so funktioniert es bestens, die Kreise hinterlassen keine Spuren mehr. Ist schon komisch, dieses PureBasic. :D

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

Verfasst: 17.08.2011 15:55
von bobobo
[Nahezu Offtopic]
Da ich da oben angegangen werde mal etwas zur Klarstellung.
Ich habe in diesen Thread nicht hinundher geschoben genausowenig
wie ich in dem o.a. basta-Posting irgendwas editiert habe. Ich habe
dort zur erklären versucht, dass dort etwas stattgefunden hat, das
außerhalb des normalen Admin/Mod-Horizonts liegt.
Alles andere ist Verschwörungstheorie ...
Hierzu muss jetzt aber echt nichts mehr geschrieben werden
[/Nahezu Offtopic]

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

Verfasst: 18.08.2011 04:31
von PureLust
ullmann hat geschrieben: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.
Siehe zu diesem Problem auch diesen Thread.

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

Verfasst: 18.08.2011 07:17
von ullmann
Ja genau, das wars was ich meinte.

Allerdings hatte ich kurz vor dem Erstellen des Threads im Forum schon weitergelesen und keine Lust das nochmal
rauszusuchen.