Est-ce un bug ?

Archive.
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Est-ce un bug ?

Message par Mytic »

Pas de problème , Vous verrez Bonjour ! et Cooool !

Code : Tout sélectionner

InitSprite()
OpenWindow(0,50,50,500,500,"teste")
OpenWindowedScreen(WindowID(0),0,0,500,500,0,0,0)
ClearScreen(0)
FlipBuffers()
Delay(500)
o = ScreenOutput()
StartDrawing(o)
DrawingMode(#PB_2DDrawing_Default)
DrawText(10,10,"Bonjour !",255,6329)
StopDrawing()

o = ScreenOutput() ; Avec ça pas de problème
StartDrawing(o)
DrawingMode(#PB_2DDrawing_Default)
DrawText(10,100,"coooool !",255,6329)
StopDrawing()

FlipBuffers()
Delay(1500)
End

Problème , Vous verrez que Bonjour!

Code : Tout sélectionner

InitSprite()
OpenWindow(0,50,50,500,500,"teste")
OpenWindowedScreen(WindowID(0),0,0,500,500,0,0,0)
ClearScreen(0)
FlipBuffers()
Delay(500)
o = ScreenOutput()
StartDrawing(o)
DrawingMode(#PB_2DDrawing_Default)
DrawText(10,10,"Bonjour !",255,6329)
StopDrawing()

;sans !!
StartDrawing(o)
DrawingMode(#PB_2DDrawing_Default)
DrawText(10,100,"coooool !",255,6329)
StopDrawing()

FlipBuffers()
Delay(1500)
End
:?
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Est-ce que ScreenOutput() change à chaque StopDrawing ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mytic a écrit :Est-ce que ScreenOutput() change à chaque StopDrawing ?
j'avais remarqué qu'il fallait bien ouvrir (StartDrawing(o)) et fermer (StopDrawing() systematiquement, faudrait demander sur le forum anglais
mais il doit y avoir une explication
n'oublions pas que nous sommes dans un system multitache , il n'est pas exclue que justement a cause de ça, il faille bien liberer les ressources ... :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

En principe, et si j'ai bien compris, (et ça, c'est pas encore sûr), ScreenOutput() ne renvoie rien.
Il indique simplement ou va s'afficher le dessin.

Par contre, StartDrawing() renvoie le hdc de la surface de dessin, et lui, il change à chaque StopDrawing()

Alors est-ce qu'il y a une relation entre les deux? J'en sais rien.
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Plus on approfondi nos connaissance en PureBasic , plus on manque de réponses !
Y’a plein de mystère autour.
Au fait ! Une fois DirectX 9 ou 10 incorporé à PureBaisc , les Sprite 2D n’auront plus d’intérêt ?
:?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Bon, finalement, ScreenOutput() renvoie quelque chose. (Je l'avais dit, que c'était pas sur que j'aie compris :lol: )

Et il renvoie toujours la même chose. Sans doute le handle du WindowedScreen()

Code : Tout sélectionner


InitSprite()
OpenWindow(0,50,50,500,500,"teste")
OpenWindowedScreen(WindowID(0),0,0,500,500,0,0,0)
ClearScreen(0)
FlipBuffers()
;Delay(500)
o = ScreenOutput()

Debug o

StartDrawing(o)
; DrawingMode(#PB_2DDrawing_Default)
; DrawText(10,10,"Bonjour !",255,6329)
StopDrawing()

; ;sans !!
o = ScreenOutput()

Debug o

 StartDrawing(o)
; DrawingMode(#PB_2DDrawing_Default)
; DrawText(10,100,"coooool !",255,6329)
 StopDrawing()

; FlipBuffers()
; Delay(1500)
End


Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Alors ScreenOutput() c’est comme un anti_FlipBuffers :lol:
Laulite
Messages : 26
Inscription : mer. 06/juin/2007 21:27
Contact :

screenoutput(): the specified output is #Null

Message par Laulite »

Visiblement, l'utilisation de screenoutput doit se faire avec des pincettes. Lors d'un debugage, il m'ai arrivé ceci:

Code : Tout sélectionner

InitSprite():InitKeyboard()
OpenWindow(0,0,0,300,300,"ScreenOutput",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0)
ClearScreen(0)
Debug ScreenOutput()
If StartDrawing(ScreenOutput())
  Box(100,100,100,100,RGB(255,100,0))
  StopDrawing()
EndIf

Repeat
  event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow
à compiler avec debugger---> the specified output is #NULL
si vous mettez un commentaire sur la ligne Debug ScreenOutput()
plus d'erreur. En gros, il ne faut pas utiliser screenoutput pour rien!
Le boeuf est lent mais la terre est patiente
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: Est-ce un bug ?

Message par beauregard »

Mytic a écrit : :?
D'après la doc, ScreenOutput() Renvoie l'OutputID de l'écran courant nécessaire à StartDrawing().
Donc ScreenOutput() et StartDrawing() sont comme des jumeaux qu'il ne faut pas séparer, et organiser ton code en fonction de cette exigeance.
Laulite
Messages : 26
Inscription : mer. 06/juin/2007 21:27
Contact :

Message par Laulite »

impeccablement résumé...
Le boeuf est lent mais la terre est patiente
Répondre