Page 2 sur 2

Publié : dim. 25/janv./2009 19:23
par Patrick88
aaaaaaaaaaahhhhhhhh eeeeeeeuuuuuuuuuuh ! bonne question...

gnésaitpas...

je regarde...

euh, je vois "bibliothèque sous système" dans les options de compilation
c'est vide et je ne sais pas quoi y mettre ...

pat

Publié : dim. 25/janv./2009 19:26
par beauregard
Ollivier a écrit :J'ai un GPU interne baptisé VIA Chrome9 HC3 IGP avec 64Mo. La carte vidéo porte le même nom.
Ogre est exigeant, et 64Mo vram, c'est vraiment trop juste... du nvidia ou ati tu prendra :)

Publié : dim. 25/janv./2009 19:31
par Patrick88
beauregard a écrit :
Ollivier a écrit :J'ai un GPU interne baptisé VIA Chrome9 HC3 IGP avec 64Mo. La carte vidéo porte le même nom.
Ogre est exigeant, et 64Mo vram, c'est vraiment trop juste... du nvidia ou ati tu prendra :)
bin vi, mais moi j'en ai 768 et ça passe pas quand meme...

Publié : dim. 25/janv./2009 20:02
par comtois
Patrick88 a écrit :euh, je vois "bibliothèque sous système" dans les options de compilation
c'est vide et je ne sais pas quoi y mettre ...

pat
tu tapes directx9

si tu es sous linux , tu tapes opengl

Publié : dim. 25/janv./2009 20:05
par Patrick88
comtois a écrit :
Patrick88 a écrit :euh, je vois "bibliothèque sous système" dans les options de compilation
c'est vide et je ne sais pas quoi y mettre ...

pat
tu tapes directx9

si tu es sous linux , tu tapes opengl
oky, ça marche (ouf, c'était pas bug)

pat

Publié : dim. 25/janv./2009 22:12
par Ollivier
@Comtois

Oui ce bug est résolu avec cette option.
Merci pour l'info.

Par contre, j'ai un autre bug que je découvre. Je l'ai recopié dans le code plus bas.

Comment y remédier? CàD quel dépassement de valeur aboutit à ce crash?

Code : Tout sélectionner

CR.S = Chr(10)
QT.S = Chr(34)
Info.S = "Assertion failed!" + CR + CR
Info + "Program: ..." + CR
Info + "File: y:\ogremain\include\OgreAxisAlignedBox.h" + CR
Info + "Line: 246" + CR + CR
Info + "Expression: (min.x <= max.x && min.y <= max.y && min.z <= max.z) && " + QT + "The minimum" + CR
Info + "corner of the box must be less than or equal to maximum corner" + QT + CR + CR
Info + "For information on how your program can cause an assertion" + CR
Info + "failure, see the Visual C++ documentation on asserts" + CR + CR
Info + "(Press Retry to debug the application - JIT must be enabled)"
MessageRequester("Microsoft Visual C++ Runtime Library", Info, 2)

Publié : dim. 25/janv./2009 23:20
par Ollivier
@Comtois

Après recherche, je crois que c'est le FrameRate qui a du mal au démarrage quand on appuie sur le champignon pendant que la mémoire virtuelle se synchronise (sauvegarde ou chargement, j'en sais rien).

Comme tu as basé le calcul de la vitesse sur le FrameRate, ça fausse la gestion de la caméra (qui est magnifique en temps normal).

J'ai rajouté une boucle d'introduction pour laisser le FrameRate donner des valeurs justes.

Code : Tout sélectionner

;PB 4.30 le 10/01/09 

InitEngine3D() 
InitSprite() 
InitKeyboard() 

;Pour enregistrer au format PNG 
UsePNGImageEncoder() 

ExamineDesktops() 
OpenScreen(DesktopWidth(0), DesktopHeight(0), DesktopDepth(0), "Tutoriel 3D") 

;Pour charger une texture, mesh, entity , etc, indiquer le chemin où se trouvent ces médias 
Add3DArchive("/", #PB_3DArchive_FileSystem) 

Enumeration 
  #VueDessus 
  #VueArriere 
  #VueCote 
  #VueAvant 
EndEnumeration 

Global Angle.f, Vitesse.f 
Define.l Options, ModeCamera, i 

ModeCamera = #VueArriere 

Macro NEW_X(x, Angle, Distance) 
  ((x) + Cos((Angle) * 0.0174533) * (Distance)) 
EndMacro 

Macro NEW_Z(z, Angle, Distance) 
  ((z) - Sin((Angle) * 0.0174533) * (Distance)) 
EndMacro 

;- Declaration des procédures 
Declare.f CurveValue(actuelle.f, Cible.f, P.f) 
Declare GestionCamera(Mode.l) 

;-Mesh 
#Mesh = 0 
CreateMesh(#Mesh, 100) 
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate 
SetMeshData(#Mesh, Options      , ?Sommets, 24) 
SetMeshData(#Mesh, #PB_Mesh_Face, ?Triangles, 12) 

;-Textures 
#Texture = 0 
CreateImage(#Texture, 64, 64) 

;Remplissage de la texture en blanc 
StartDrawing(ImageOutput(#Texture)) 
Box(0, 0, ImageWidth(#Texture), ImageHeight(#Texture), $FFFFFF) 
DrawingMode(#PB_2DDrawing_Outlined) ; Pour tracer le contour 
Box(0, 0, ImageWidth(#Texture), ImageHeight(#Texture), 0) 
StopDrawing() 

;Enregistre l'image dans le même répertoire que le code source 
Fichier$="TextureDVP1.PNG" 
SaveImage(#Texture, Fichier$, #PB_ImagePlugin_PNG) 

;Maintenant on peut charger notre texture 
LoadTexture(#Texture, Fichier$) 


#TextureSol = 1 
CreateImage(#TextureSol, 128, 128) 

;Remplissage de la texture en blanc 
StartDrawing(ImageOutput(#TextureSol)) 
Box(0, 0, ImageWidth(#TextureSol), ImageHeight(#TextureSol), $FFFFFF) 
For i = 0 To 127 Step 10 
  Line(i, 0, 0, ImageHeight(#TextureSol), $0000FF) 
  Line(0, i, ImageWidth(#TextureSol), 0, $0000FF) 
Next i 

DrawingMode(#PB_2DDrawing_Outlined) ; Pour tracer le contour 
Box(0, 0, ImageWidth(#TextureSol), ImageHeight(#TextureSol), $000088) 
StopDrawing() 


;Enregistre l'image dans le même répertoire que le code source 
Fichier$="TextureDVP2.PNG" 
SaveImage(#TextureSol, Fichier$, #PB_ImagePlugin_PNG) 

;Maintenant on peut charger notre texture 
LoadTexture(#TextureSol, Fichier$) 

;-Matière 
#Matiere = 0 
CreateMaterial(#Matiere, TextureID(#Texture)) 

#MatiereSol = 1 
CreateMaterial(#MatiereSol, TextureID(#TextureSol)) 

;-Entity 
#Entity = 0 
CreateEntity(#Entity, MeshID(#Mesh), MaterialID(#Matiere)) 
ScaleEntity(#Entity, 10, 10, 10) ; Agrandi l'entity 
EntityLocate(#Entity, 500, 5, 500) 

#EntitySol = 1 
CreateEntity(#EntitySol, MeshID(#Mesh), MaterialID(#MatiereSol)) 
ScaleEntity(#EntitySol, 1000, 2, 1000) ; Agrandi l'entity 
EntityLocate(#EntitySol, 500, -5, 500) 

;-Camera 
#Camera = 0 
CreateCamera(#Camera, 0, 0, 100, 100) 

;-Light 
AmbientColor(RGB(55,55,55)) ; Réduit la lumière ambiante pour mieux voir les lumières 
#LightRouge = 0 : CreateLight(#LightRouge,RGB(255, 0, 0),    0, 500,    0) 
#LightBleue = 1 : CreateLight(#LightBleue,RGB(0, 0, 255),    0, 500, 1000) 
#LightVerte = 2 : CreateLight(#LightVerte,RGB(0, 255, 0), 1000, 500, 1000) 

;- Sprite pour afficher l'aide 


;- Petit échauffement pour éviter un claquage... 
CreateSprite(64000, 256, 24)
   StartDrawing(SpriteOutput(64000) )
      DrawText(0, 0, "Please wait...", #White, #Black)
   StopDrawing()
   For i = 0 To 1 << 8
      ExamineKeyboard()
      FrameRate = Engine3DFrameRate(#PB_Engine3D_Current)
      CameraLocate(#Camera, Px, Py, Pz) 
      CameraLookAt(#Camera, EntityX(#Entity), EntityY(#Entity), EntityZ(#Entity)) 
      RenderWorld()
      DisplayTransparentSprite(64000, 0, 0)
      FlipBuffers() 
   Next
FreeSprite(64000)

;- Démarrage
Repeat 
  
  FrameRate = Engine3DFrameRate(#PB_Engine3D_Current)
  Vitesse = 240 / FrameRate
  If Vitesse > 10: Vitesse = 10: EndIf
  If ExamineKeyboard() 
    ;Change la vue de la caméra 
    If KeyboardReleased(#PB_Key_F1) 
      ModeCamera = #VueDessus 
    ElseIf KeyboardReleased(#PB_Key_F2) 
      ModeCamera = #VueArriere 
    ElseIf KeyboardReleased(#PB_Key_F3) 
      ModeCamera = #VueCote 
    ElseIf KeyboardReleased(#PB_Key_F4) 
      ModeCamera = #VueAvant 
    EndIf 

    If KeyboardPushed(#PB_Key_Left) 
      Angle + Vitesse 
      RotateEntity(#Entity, 0, Angle, 0, #PB_Absolute) 
    ElseIf KeyboardPushed(#PB_Key_Right) 
      Angle - Vitesse 
      RotateEntity(#Entity, 0, Angle, 0, #PB_Absolute) 
    EndIf 
    
    If KeyboardPushed(#PB_Key_Up) 
      MoveEntity(#Entity, NEW_X(0, Angle , Vitesse), 0, NEW_Z(0, Angle, Vitesse)) 
    ElseIf KeyboardPushed(#PB_Key_Down) 
      MoveEntity(#Entity, NEW_X(0, Angle , -Vitesse), 0, NEW_Z(0, Angle, -Vitesse)) 
    EndIf 

  EndIf 

  GestionCamera(ModeCamera) 

  RenderWorld() 

  FlipBuffers() 

Until KeyboardPushed(#PB_Key_Escape) 


Procedure.f CurveValue(actuelle.f, Cible.f, P.f) 
  ;Calcule une valeur progressive allant de la valeur actuelle à la valeur cible 
  Define.f Delta 
  Delta = Cible - actuelle 
  If P > 1000.0 : P = 1000.0 : EndIf 
  ProcedureReturn  (actuelle + ( Delta * P / 1000.0)) 
EndProcedure 

Procedure GestionCamera(Mode.l) 
  Define.f Px, Py, Pz, Pv 
  Static AngleCamera.f 

  Pv = 25 * (60 / Engine3DFrameRate(#PB_Engine3D_Current) ) 

  Select Mode 

    Case #VueDessus 
      AngleCamera = CurveValue(AngleCamera, Angle + 180, Pv) 
      Px = CurveValue(CameraX(#Camera), NEW_X(EntityX(#Entity), AngleCamera, 40), Pv) 
      Py = CurveValue(CameraY(#Camera), EntityY(#Entity) + 140, Pv) 
      Pz = CurveValue(CameraZ(#Camera), NEW_Z(EntityZ(#Entity), AngleCamera, 40), Pv) 

    Case #VueArriere 
      AngleCamera = CurveValue(AngleCamera, Angle + 180, Pv) 
      Px = CurveValue(CameraX(#Camera), NEW_X(EntityX(#Entity), AngleCamera, 80), Pv) 
      Py = CurveValue(CameraY(#Camera), EntityY(#Entity) + 40, Pv) 
      Pz = CurveValue(CameraZ(#Camera), NEW_Z(EntityZ(#Entity), AngleCamera, 80), Pv) 

    Case #VueCote 
      AngleCamera = CurveValue(AngleCamera, Angle + 120, Pv) 
      Px = CurveValue(CameraX(#Camera), NEW_X(EntityX(#Entity), AngleCamera, 80), Pv) 
      Py = CurveValue(CameraY(#Camera), EntityY(#Entity) + 40, Pv) 
      Pz = CurveValue(CameraZ(#Camera), NEW_Z(EntityZ(#Entity), AngleCamera, 80), Pv) 

    Case #VueAvant 
      AngleCamera = CurveValue(AngleCamera, Angle, Pv) 
      Px = CurveValue(CameraX(#Camera), NEW_X(EntityX(#Entity), AngleCamera, 80), Pv) 
      Py = CurveValue(CameraY(#Camera), EntityY(#Entity) + 40, Pv) 
      Pz = CurveValue(CameraZ(#Camera), NEW_Z(EntityZ(#Entity), AngleCamera, 80), Pv) 

  EndSelect 

  CameraLocate(#Camera, Px, Py, Pz) 
  CameraLookAt(#Camera, EntityX(#Entity), EntityY(#Entity), EntityZ(#Entity)) 
EndProcedure 


;{ Définition du cube 
DataSection 
  Sommets: 
  ;Dessus 0 à 3 
  Data.f -0.5,0.5,-0.5 
  Data.f 0,1,0 
  Data.l 0 
  Data.f 0,0 

  Data.f 0.5,0.5,-0.5 
  Data.f 0,1,0 
  Data.l 0 
  Data.f 0,1 

  Data.f 0.5,0.5,0.5 
  Data.f 0,1,0 
  Data.l 0 
  Data.f 1,1 

  Data.f -0.5,0.5,0.5 
  Data.f 0,1,0 
  Data.l 0 
  Data.f 1,0 

  ;Dessous 4 à 7 
  Data.f -0.5,-0.5,0.5 
  Data.f 0,-1,0 
  Data.l 0 
  Data.f 0,0 

  Data.f 0.5,-0.5,0.5 
  Data.f 0,-1,0 
  Data.l 0 
  Data.f 0,1 

  Data.f 0.5,-0.5,-0.5 
  Data.f 0,-1,0 
  Data.l 0 
  Data.f 1,1 

  Data.f -0.5,-0.5,-0.5 
  Data.f 0,-1,0 
  Data.l 0 
  Data.f 1,0 

  ;Devant 8 à 11 
  Data.f -0.5,0.5,0.5 
  Data.f 0,0,1 
  Data.l 0 
  Data.f 0,0 

  Data.f 0.5,0.5,0.5 
  Data.f 0,0,1 
  Data.l 0 
  Data.f 0,1 

  Data.f 0.5,-0.5,0.5 
  Data.f 0,0,1 
  Data.l 0 
  Data.f 1,1 

  Data.f -0.5,-0.5,0.5 
  Data.f 0,0,1 
  Data.l 0 
  Data.f 1,0 

  ;Derrière 12 à 15 
  Data.f 0.5,0.5,-0.5 
  Data.f 0,0,-1 
  Data.l 0 
  Data.f 0,0 

  Data.f -0.5,0.5,-0.5 
  Data.f 0,0,-1 
  Data.l 0 
  Data.f 0,1 

  Data.f -0.5,-0.5,-0.5 
  Data.f 0,0,-1 
  Data.l 0 
  Data.f 1,1 

  Data.f 0.5,-0.5,-0.5 
  Data.f 0,0,-1 
  Data.l 0 
  Data.f 1,0 

  ;Cote gauche 16 à 19 
  Data.f -0.5,0.5,-0.5 
  Data.f -1,0,0 
  Data.l 0 
  Data.f 0,0 

  Data.f -0.5,0.5,0.5 
  Data.f -1,0,0 
  Data.l 0 
  Data.f 0,1 

  Data.f -0.5,-0.5,0.5 
  Data.f -1,0,0 
  Data.l 0 
  Data.f 1,1 

  Data.f -0.5,-0.5,-0.5 
  Data.f -1,0,0 
  Data.l 0 
  Data.f 1,0 

  ;Cote droit 20 à 23 
  Data.f 0.5,0.5,0.5 
  Data.f 1,0,0 
  Data.l 0 
  Data.f 0,0 

  Data.f 0.5,0.5,-0.5 
  Data.f 1,0,0 
  Data.l 0 
  Data.f 0,1 

  Data.f 0.5,-0.5,-0.5 
  Data.f 1,0,0 
  Data.l 0 
  Data.f 1,1 

  Data.f 0.5,-0.5,0.5 
  Data.f 1,0,0 
  Data.l 0 
  Data.f 1,0 

  Triangles: 
  ;Face en Haut 
  Data.w 2,1,0 
  Data.w 0,3,2 
  ;Face en Bas 
  Data.w 6,5,4 
  Data.w 4,7,6 
  ;Face Avant 
  Data.w 10,9,8 
  Data.w 8,11,10 
  ;Face Arrière 
  Data.w 14,13,12 
  Data.w 12,15,14 
  ;Face Gauche 
  Data.w 18,17,16 
  Data.w 16,19,18 
  ;Face Droite 
  Data.w 22,21,20 
  Data.w 20,23,22 
EndDataSection 
;}

Publié : dim. 25/janv./2009 23:45
par guerrier001
on se croyrait dans une bataille entre le passer et le present , car des personne parle de diretcx7 alors qu'il existe deja directx9 et meme 11 je croit.

Publié : lun. 26/janv./2009 12:52
par Patrick88
tu oublies dx3 qui était implémenté dans NT, je crois... z'ont fais des progrès chez 'crosoft depuis le temps :lol:

pat

Publié : lun. 26/janv./2009 18:17
par beauregard
comtois a écrit :et tu as bien sélectionné le sous système directx9 ?
on ne peut pas créer de sprite avec directx7 si InitEngine3D() est actif.
je confirme il faut taper directx9 merci comtois :)