Page 1 sur 2
Erreur : Invalid memory Access (read error at adress 0)
Publié : dim. 01/mars/2009 18:01
par Zelfu
Bonjour, depuis quelques jours, j'essaye les fonctions de Purebasic, et je suis tombé sur la fonction suivante : LoadTexture(), et SkyBox(), je les ais utilisés, et une erreur que je ne comprends pas apparait :
Invalid memory access ( read error at adress 0) . Je ne trouve pas de solution, et je me suis tourné vers ce forum.
Code : Tout sélectionner
InitEngine3D()
InitSprite()
OpenWindow(0, 0, 0, 320, 320, "Texture", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenScreen(256, 256, 8, "Texture")
Add3DArchive("Data\" , #PB_3DArchive_FileSystem)
LoadTexture(1, "clouds.jpeg") ; l'erreur est là
SkyBox("clouds.jpeg")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Publié : dim. 01/mars/2009 18:49
par tmyke
Cela ne sera pas plutôt clouds.jpg au lieu de clouds.jpeg des fois ?
Publié : dim. 01/mars/2009 18:49
par Zelfu
je change, mais ça ne change rien, toujours la même erreur.
Publié : dim. 01/mars/2009 18:53
par comtois
Pour la 3D sous windows, il faut utiliser le sous-système directx9, sous linux c'est opengl.
Tu vas dans le menu 'compilateur' puis 'options du compilateur'
et tu verras un champ 'bibliothèque du sous-système' tu n'as plus qu'à taper directx9
Publié : dim. 01/mars/2009 18:59
par comtois
et c'est OpenWindowedScreen() si tu veux une fenêtre, et pas OpenScreen()
Ce code fonctionne
Code : Tout sélectionner
InitEngine3D()
InitSprite()
OpenWindow(0, 0, 0, 320, 320, "Texture", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0, 256, 256, 0,0,0)
Add3DArchive("Data" , #PB_3DArchive_FileSystem)
LoadTexture(1, "clouds.jpg") ; l'erreur est là
SkyBox("clouds.jpeg")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Publié : dim. 01/mars/2009 18:59
par Zelfu
Quand je le fais, pendant la compilation, j'ai un message d'erreur :
The following subsystem cannot be found: directx9
Edit à Comtois : j'ai la même erreur, après
Publié : dim. 01/mars/2009 18:59
par comtois
tu as quelle version ?
regarde dans ton répertoire purebasic, tu dois voir un sous répertoire qui se nomme SubSystems et dans ce répertoire tu dois voir le répertoire Directx9 et d'autres comme OpenGL ...
Publié : dim. 01/mars/2009 19:01
par Zelfu
dans Subsystem, j'ai un fichier opengl, et un autre nommé NT4.
Publié : dim. 01/mars/2009 19:15
par Zelfu
Nouveau : La fenêtre s'affiche, mais elle est remplie de noir, je ne vois pas de cube.
Publié : dim. 01/mars/2009 21:26
par Ollivier
Comtois a écrit :ce code fonctionne
Non! Le chemin est incomplet. + Pas d'images avec les suffixes adéquats (BK, FR, etc...)
Le week-end est parfois dur. Bon courage pour la semaine!
Comtois a écrit :tu as quelle version ?
@Zelfu
Mes hommages du jour! Bienvenu!
Je te repose la même question! Est-ce que tu pourrais préciser la version que tu as?
Zelfu a écrit :dans Subsystem, j'ai un fichier opengl, et un autre nommé NT4.
Moi j'ai TROIS répertoires : OpenGL, NT4 et DirectX9
Est-ce que tu as ces 3 répertoires aussi? Tu n'as pas posté de réponse formelle à ce sujet.
Voilà, si tu réponds aux questions posées, ça est un tout petit peu plus facile de cerner le problème, pour toi comme pour les futures personnes à utiliser Ogre sous Windows!
Il faut SIX fichiers image (Cf >> Documentation de SkyBox() )
Teste ce code qui (logiquement, et je l'espère grandement...) fonctionne:
(Si des questions te viennent sur ce code, c'est sans problème pour y répondre. Aussi n'hésite pas à répondre pour dire si ça marche, si ça marche pas, etc...)
Woilà! Tschuess!
Code : Tout sélectionner
Dim SkySfx$(5)
SkySfx$(0) = "FR"
SkySfx$(1) = "BK"
SkySfx$(2) = "UP"
SkySfx$(3) = "DN"
SkySfx$(4) = "LF"
SkySfx$(5) = "RT"
Procedure Err(Mess.S)
MessageRequester("Erreur", "Problème avec " + Mess)
EndProcedure
Chemin$ = "examples\sources\Data"
MessageRequester("Attention!", "Il ne faut pas oublier de préciser «directx9» dans la bibliothèque sous-système des options du compilateur! Sinon ça ne marche pas!")
If InitEngine3D()
If InitSprite()
InitKeyboard()
If OpenWindow(0, 0, 0, 320, 320, "Touches GAUCHE et DROITE !!!", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0),0,0, 256, 256, 0,0,0)
If Add3DArchive(Chemin$, #PB_3DArchive_FileSystem)
For I = 0 To 5
CopyFile(Chemin$ + "clouds.jpg", Chemin$ + "clouds_" + SkySfx$(I) + ".jpg")
Next I
If SkyBox("clouds.jpg")
If CreateCamera(0, 0, 0, 256, 256)
Repeat
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
RotateCamera(0, 0, 4, 0, #PB_Relative)
EndIf
If KeyboardPushed(#PB_Key_Right)
RotateCamera(0, 0, -4, 0, #PB_Relative)
EndIf
RenderWorld()
Event = WindowEvent()
Delay(25)
Until Event = #PB_Event_CloseWindow
Else
Err("CreateCamera()")
EndIf
Else
Err("SkyBox()")
EndIf
Else
Err("Add3DArchive()")
EndIf
Else
Err("OpenWindowedScreen()")
EndIf
Else
Err("OpenWindow()")
EndIf
Else
Err("InitSprite()")
EndIf
Else
Err("InitEngine3D()")
EndIf
Publié : lun. 02/mars/2009 14:38
par comtois
Ollivier a écrit :Comtois a écrit :ce code fonctionne
Non! Le chemin est incomplet. + Pas d'images avec les suffixes adéquats (BK, FR, etc...)
Le week-end est parfois dur. Bon courage pour la semaine!
Je voulais surtout lui montrer qu'avec le code que j'ai posté, je n'avais pas d'erreur IMA .
Zelfu, elle est bizarre ta version si tu n'as pas le sous répertoire DirectX9 !!
Ensuite, est-ce que tu as testé les exemples 3D dans le répertoires examples/sources de PureBasic ?
Avant de commencer à écrire un code, regarde les exemples, amuse toi à les modifier pour comprendre.
Publié : lun. 02/mars/2009 19:37
par Zelfu
Oui, justement, je comprends pas pourquoi ça fonctionne dans les exemples , mais pas dans mon code. Bref, sinon, le problème est le même avec skydome(). Rien. Un ecran noir.
@Olivier : oui, j'ai seulement 2 fichiers dans le répertoire subsystems.
J'ai la version 9.0 de directX (merci dxdiag).
J'ai testé ton code, et voici le problème :
Constant not found : #PB_Relative(line 30)
Merci de votre aide.
Publié : lun. 02/mars/2009 19:54
par comtois
Tu l'as récupéré où ta version de PureBasic ?
Publié : lun. 02/mars/2009 19:58
par Ollivier
@Zelfu
Mais es-tu sous logiciel de démonstration ou bien sous license?
Publié : mar. 03/mars/2009 17:22
par Zelfu
ma version est la 4.10