Page 3 sur 3

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 16:06
par falsam
J'ai changé mes condition de tests en compilant le code pure basic avec le sous sytéme OpenGl.

Malgré le changement de résolution, mon jeu plein ecran (Age of empire) et mon jeu Pure Basic Cohabitent parfaitement. Je peux basculer de l'un à l'autre sans soucis.

Une autre remarque : L'option sous system OpenGL dans les paramètres de compilation me permet de basculer une application 3D Pure Basic d'un moniteur à un autre. Chose qui n'est pas possible de faire sans cette option.

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 16:07
par Backup
bon en fait, c'est pas vraiment le programme graphique qui plante !

mais plutot la Sortie du prg "Screen3DRequester" !

car au final les exemples 3D de Purebasic incluent tous le lanceur "Screen3DRequester" !!

c'est c'est donc ce lanceur ...qui lance le prg 3D ...

lorsqu'on quitte le prg 3D ... (apres avoir fait la manip de lancer un jeux 3D plein ecran par dessus notre exemple/ puis de l'avoir quitté .... )
on quitte bien l'exemple 3D ....

le plantage a lieu au moment de Quitter le lanceur !"Screen3DRequester" ... du moins il me semble ....

je vais faire un test sans ce lanceur pour voir ....

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 16:23
par falsam
Dobro a écrit :je vais faire un test sans ce lanceur pour voir ....
Je l'ai fait sans ce lanceur et j'ai le même phénomène. Plantage sur le End.

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 16:31
par Backup
oui , je confirme ! .... ça se complique :)

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 17:01
par Backup
....

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : mer. 22/janv./2014 17:36
par Backup

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : jeu. 23/janv./2014 14:12
par pat
A falsam et à Dobro :
Je vous remercie tous les deux pour vos interventions respectives et merci à Dobro d'avoir mis sur le forum anglais l'explication du bug.
Avec OpenGL il n'y a aucun souci et donc je ne serais pas étonné qu'avec le sous-système OpenGL cela fonctionne mais il faut se dire que le comportement avec le sous-système OpenGL n'est pas le même avec certaines instructions PB.
Pour se convaincre qu'OpenGL fonctionne bien, c'est d'ouvrir l'exemple PB OpenGL qui fait tourner un cube en 3D, mais pas avec Ogre et DirectX, mais avec OpenGL. D'ailleurs, c'est du code OpenGL.

Il y a bien un problème avec les écrans graphiques, en 2D et en 3D, même si en 2D on peut améliorer les choses.
Encore une fois, merci à vos deux pour vos aides respectives.

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : lun. 27/janv./2014 15:14
par jerexgrz
En lisant vos propos sur le isscreenactive(), j'ai trouvé ce code :
InitSprite()
InitMouse()
InitKeyboard()

OpenScreen(1024, 768, 32, "fllscrn")

CreateSprite(0, 64, 64)
StartDrawing(SpriteOutput(0))
Line( 0, 0, 48, 32,$0FF0FF)
Line( 0, 0, 64, 64,$0FF0FF)
Line( 0, 0, 32, 48,$0FF0FF)
StopDrawing()

Repeat
ExamineMouse()
ExamineKeyboard()
ClearScreen(0)
DisplayTransparentSprite(0, MouseX(), MouseY())
FlipBuffers()

If IsScreenActive() = 0
ReleaseMouse(1)

Repeat

While PeekMessage_(msg.MSG, 0, 0, 0, #PM_REMOVE)
; ;TranslateMessage_(msg)
; ;DispatchMessage_(msg)
Wend
Delay(100)

Until IsScreenActive() <> 0

CloseScreen()

Delay(1000)
OpenScreen(1024, 768, 32, "fllscrn")
ReleaseMouse(0)

CreateSprite(0, 64,64)
StartDrawing(SpriteOutput(0))
Line( 0, 0, 48, 32, $0FF0FF)
Line( 0, 0, 64, 64, $0FF0FF)
Line( 0, 0, 32, 48, $0FF0FF)
StopDrawing()

EndIf
Until KeyboardPushed(#PB_Key_Escape)
Il est simple, et pas long. D'ailleurs, un exemple serait le bienvenue dans la doc. Car la fonction isscreenactive() n'est pas difficile à s'en servir par contre, il fallait savoir qu'il fallait fermer l'écran (closescreen). Puis le rouvrir.

Remarque pour Fred: c'est bizarre de mettre le closescreen() en dehors de "IsScreenActive() = 0". Je comprends le fait de respecter la syntaxe. Mais si "IsScreenActive() = 0" (comme je suis en openscreen()) c'est que forcement, je n'ai plus cet écran d'activer. Ensuite, quand "IsScreenActive() <> 0", on réactive l'écran.
Parce qu'après, si on lit le code, on a un closescreen() suivit d'un openscreen().

Bref ... avec les fonctions msdn ci-dessous, le bouton dans la barre de tâche fonctionne mieux. On appuye un seul coup dessus et hop, on revient sur notre programme en pleine ecran.
PeekMessage_(msg.MSG, 0, 0, 0, #PM_REMOVE)
TranslateMessage_(msg)
DispatchMessage_(msg)
Y'a t-il des commandes en PB pour gérer celà ?

Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan

Publié : lun. 27/janv./2014 20:55
par Backup
il ressemble furieusement au code de Djes
posté ici:
http://www.purebasic.fr/french/viewtopi ... =1&t=10521

le problème de ce code, c'est qu'il n'est pas mis en situation !
j'aimerai le voir fonctionner avec un Sprite qui se promène sur l'ecran (tout seul pas affilié a la souris ;) )

mon code est peut etre un poil plus Grand... (et encore )
mais il fonctionne avec un Sprite rebondissant sur l'ecran ....sans perdre la position du sprite en cours de deplacement
ce qui fait qu'au retour; on retrouve la situation du jeux :)