Erreur : Invalid memory Access (read error at adress 0)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Erreur : Invalid memory Access (read error at adress 0)

Message 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
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cela ne sera pas plutôt clouds.jpg au lieu de clouds.jpeg des fois ?
Force et sagesse...
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message par Zelfu »

je change, mais ça ne change rien, toujours la même erreur.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message 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
Dernière modification par Zelfu le dim. 01/mars/2009 19:00, modifié 1 fois.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 ...
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message par Zelfu »

dans Subsystem, j'ai un fichier opengl, et un autre nommé NT4.
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message par Zelfu »

Nouveau : La fenêtre s'affiche, mais elle est remplie de noir, je ne vois pas de cube.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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! :D

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
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message 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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Tu l'as récupéré où ta version de PureBasic ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Zelfu

Mais es-tu sous logiciel de démonstration ou bien sous license?
Zelfu
Messages : 7
Inscription : dim. 01/mars/2009 17:53

Message par Zelfu »

ma version est la 4.10
Répondre