[OK] OpenWindowScreen() freeze pendant qu'un jeu est lancé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 ....
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

oui , je confirme ! .... ça se complique :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

....
Dernière modification par Backup le mar. 19/août/2014 9:56, modifié 5 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

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

Message 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.
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

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

Message 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à ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 :)
Répondre