Exemple avec une dizaine de compositors

Généralités sur la programmation 3D
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Exemple avec une dizaine de compositors

Message par comtois »

Un exemple utilisant une dizaine de compositors issus du SDK d'ogre, ils fonctionnent tous très bien chez moi, aussi bien avec directx qu'avec opengl.

Voici la liste des compositors disponibles dans l'archive :

Code : Tout sélectionner

    ;CreateCompositorEffect(0, 0, "Old Movie")
    ;CreateCompositorEffect(0, 0, "Old TV")
    ;CreateCompositorEffect(0, 0, "B&W")
    ;CreateCompositorEffect(0, 0, "Glass")
    ;CreateCompositorEffect(0, 0, "Sharpen Edges")
    ;CreateCompositorEffect(0, 0, "Posterize")
    ;CreateCompositorEffect(0, 0, "ASCII")
    ;CreateCompositorEffect(0, 0, "Embossed")   
    ;CreateCompositorEffect(0, 0, "Tiling") 
    CreateCompositorEffect(0, 0, "Night Vision") 

http://ftp-developpez.com/comtois/fichi ... ositor.zip
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.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Exemple avec une dizaine de compositors

Message par G-Rom »

Salut comtois , ton archive n'a pas l'air complète , j'ai des exceptions de fichier manquant dans le .log
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Exemple avec une dizaine de compositors

Message par comtois »

Oui j'ai vu les exceptions après coup, faudra que je nettoie un peu mieux l'archive. Mais ça n'empêche pas de faire fonctionner le code. Sauf que le code dans l'archive était prévu pour la 5.10.
J'ai oublié d'indiquer ici le code pour la 5.11, la seule différence c'est la commande CreateCompositorEffect() avec la 5.10 il fallait donner le numéro de la caméra, et la 5.11 c'est son ID (comme indiqué dans la doc).
CreateCompositorEffect(0, CameraID(0), "Old Movie")

Voici le code pour la 5.11

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Compositor
;
;    (c) 2013 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 2

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D(#PB_Engine3D_EnableCG)
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
    Add3DArchive("textures", #PB_3DArchive_FileSystem)   
    Add3DArchive("programs", #PB_3DArchive_FileSystem)
    Add3DArchive("models", #PB_3DArchive_FileSystem)
    Add3DArchive("packs/skybox.zip", #PB_3DArchive_Zip)
    Add3DArchive("scripts", #PB_3DArchive_FileSystem)
    Parse3DScripts()
   
    ; First create materials
    ;
   
    CreateMaterial(0, LoadTexture(0,"grass1.png"))
    MaterialBlendingMode(0, #PB_Material_AlphaBlend)
    CreateMaterial(1, LoadTexture(1,"Dirt.jpg"))
   
   
    ; Then create the billboard group and use the previous material
    ;
    ;-Billboard
   
    CreateBillboardGroup(0, MaterialID(0), 96, 96)
    For i = 0 To 600
      AddBillboard(#PB_Any, 0, Random(2000)-1000, Random(18) + 30, Random(2000) - 1000)
    Next i
   
    ; create ground
   
    CreatePlane(0, 2000, 2000, 40, 40, 4, 4)
    CreateEntity(0, MeshID(0), MaterialID(1))
   
    ; Add house
    LoadMesh(1, "tudorhouse.mesh")
    LoadMesh(2, "tudorhouse.mesh")
    CreateEntity(1, MeshID(1), #PB_Material_None, 0, 280, 0)
    ScaleEntity(1, 0.5, 0.5, 0.5)
   
    LoadMesh(3, "robot.mesh")
   
    CreateEntity(3, MeshID(3), #PB_Material_None, 0, 0, 300)
    StartEntityAnimation(3, "Walk")
    ScaleEntity(3, 2, 2, 2)
   
    RotateEntity(3, 0, -70, 0)
   
    ; SkyBox
    SkyBox("stevecube.jpg")
   
    ; create camera
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 200, 400, 900, #PB_Absolute)
    CameraLookAt(0, 0, 100, 0)
   
   
    CreateCompositorEffect(0, CameraID(0), "Old Movie")
    ;CreateCompositorEffect(0, CameraID(0), "Old TV")
    ;CreateCompositorEffect(0, CameraID(0), "B&W")
    ;CreateCompositorEffect(0, CameraID(0), "Glass")
    ;CreateCompositorEffect(0, CameraID(0), "Sharpen Edges")
    ;CreateCompositorEffect(0, CameraID(0), "Posterize")
    ;CreateCompositorEffect(0, CameraID(0), "ASCII")
    ;CreateCompositorEffect(0, CameraID(0), "Embossed")   
    ;CreateCompositorEffect(0, CameraID(0), "Tiling") 
    ;CreateCompositorEffect(0, CameraID(0), "Night Vision") 
   
    Repeat
      Screen3DEvents()
     
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
     
      If ExamineKeyboard()
       
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
       
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
       
      EndIf
     
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
     
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End
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.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Exemple avec une dizaine de compositors

Message par G-Rom »

ca marche très bien avec cg ! Fred à pris la bonne décision , un casse tête sinon ;)
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Exemple avec une dizaine de compositors

Message par venom »

J'ai un probleme chez moi j'ai le message d'erreur

Code : Tout sélectionner

"The 3D Engine can't be initialized
Pourtant "Engine3D.dll" est bien dans le dossier compilers. ça peut être du a quoi ?
J'ai cette erreur avec n'importe quel code qui appel InitEngine3D()







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Exemple avec une dizaine de compositors

Message par G-Rom »

télécharge le runtime cg toolkit de nvidia place les dll dans le rep de ton compilo.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Exemple avec une dizaine de compositors

Message par venom »

G-Rom a écrit :télécharge le runtime cg toolkit de nvidia place les dll dans le rep de ton compilo.
Ah bon 8O C'est quoi le rapport avec le compilo de purebasic ? car même les code dans l'aide de purebasic ne fonctionnent pas. Puis j'ai pas de NVidia :lol:
Merci






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Exemple avec une dizaine de compositors

Message par comtois »

venom a écrit :J'ai un probleme chez moi j'ai le message d'erreur

Code : Tout sélectionner

"The 3D Engine can't be initialized
Pourtant "Engine3D.dll" est bien dans le dossier compilers. ça peut être du a quoi ?
J'ai cette erreur avec n'importe quel code qui appel InitEngine3D()

@++
Tu as ce problème depuis quelle version ? C'est quoi ta config matériel ?
Y'a quoi dans le log d'ogre ? il faut ajouter 3 dans InitEngine3D() pour avoir le log,ça correspond à #PB_Engine3D_DebugLog | #PB_Engine3D_DebugOutput

Code : Tout sélectionner

If InitEngine3D(3)
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.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Exemple avec une dizaine de compositors

Message par Ar-S »

ça fonctionne très bien (avec le if InitEngine3D(3) )
C'est très fluide. Par contre, si je fais "echap", j'ai un "accès mémoire invalide - erreur de lecture à l'adresse 84" sur le END
Ensuite, si je change de compositor, je ne vois aucun changement à l’exécution.

il y a des choses à mettre dans les options de compilation ? Des dll à mettre quelque part ? Si oui faudrait tout fournir dans l'archive ou prévenir de manipulation particulière. Je me sens vite perdu dans ce monde de 3D/ogre/PB.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Exemple avec une dizaine de compositors

Message par venom »

comtois a écrit :Tu as ce problème depuis quelle version ?
Je ne me souviens pas quand j'ai exécuter du code 3D mais actuellement j'ai la 5.11 x86 et x64 mais les codes sont compiler sous x86.
comtois a écrit :C'est quoi ta config matériel ?
Dans ma signature :wink:

Code : Tout sélectionner

il faut ajouter 3 dans InitEngine3D() pour avoir le log,ça correspond à  #PB_Engine3D_DebugLog  | #PB_Engine3D_DebugOutput
Même avec un 3 même message d'erreur.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Exemple avec une dizaine de compositors

Message par comtois »

je n'avais pas fait attention à la signature.

sinon tu as installé directx9 ? C'est indispensable même si tu as directx11 sur ton pc !
http://www.microsoft.com/en-us/download ... aspx?id=35

venom a écrit :Même avec un 3 même message d'erreur.
Certes, mais tu dois avoir un fichier ogre.log , il y a quoi dedans ?
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.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Exemple avec une dizaine de compositors

Message par venom »

:oops: En effet je n'avais pas installer directx 9 j'ai installer que le 11.
Le code fonctionne maintenant fausse alerte :D







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Exemple avec une dizaine de compositors

Message par Ar-S »

Heu vous avez zappé ma question sinon ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Exemple avec une dizaine de compositors

Message par comtois »

Ar-S a écrit :ça fonctionne très bien (avec le if InitEngine3D(3) )
C'est très fluide. Par contre, si je fais "echap", j'ai un "accès mémoire invalide - erreur de lecture à l'adresse 84" sur le END
Ensuite, si je change de compositor, je ne vois aucun changement à l’exécution.
En effet, j'ai loupé cette question.
il y a des choses à mettre dans les options de compilation ?
Non
Des dll à mettre quelque part ?
Tu as juste besoin d'installer le cg-toolkit. Pas de dll à copier dans le rép du compilo contrairement à ce qu'a dit G-Rom.

https://developer.nvidia.com/cg-toolkit-download

Si oui faudrait tout fournir dans l'archive ou prévenir de manipulation particulière.
Ces manips sont indiquées dans la doc , aussi bien pour l'installation de directx9 que le cg-toolkit :)
http://www.purebasic.com/french/documen ... ine3d.html
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.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Exemple avec une dizaine de compositors

Message par G-Rom »

Tu as juste besoin d'installer le cg-toolkit. Pas de dll à copier dans le rép du compilo contrairement à ce qu'a dit G-Rom.
je l'ai fait par réflexe , en tout cas si tu distribue ton programme , les dll devront être fournies avec.
Répondre