PureBasic

Forums PureBasic
Nous sommes le Mer 19/Juin/2013 2:18

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: Renderworld ?
MessagePosté: Dim 21/Nov/2010 10:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 02/Nov/2010 13:53
Messages: 46
Localisation: Corte
Bonjour,

J'ai testé un peu les commandes ogre pour voir ce qu'il a dans le ventre.
J'ai initialisé quelques trucs :

Code:
If Not(InitEngine3D())
  End
EndIf
 
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
InitSprite3D()

UsePNGImageDecoder()

OpenScreen(1024,768,32,"Yom",#PB_Screen_WaitSynchronization)

Enumeration
  #camera
EndEnumeration

CreateCamera(#camera,10,5,80,50)
CameraProjectionMode(#camera,#PB_Camera_Perspective)
CameraRange(#camera,5,1500)
CameraBackColor(#camera,RGB(255,255,152))
CameraFOV(#camera,45)


Tout fonctionne à part le Renderworld plus loin, qui plante, se redimensionne à tout l'écran, et me sort un erreur dans le fichier texte ogre :
Citation:
OGRE EXCEPTION(3:RenderingAPIException): Error beginning frame :Invalid call in D3D9RenderSystem::_beginFrame at OgreD3D9RenderSystem.cpp (line 2686)


J'ai essayé pas mal de choses, mais rien n'y fait

Un idée, s.v.p ? :?

(ps : Je suis sous windows 7, 32bits,avec le tout dernier driver de ma carte graphique ASUS EAH 4350, et directx est à jour)

Merci d'avance


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Dim 21/Nov/2010 10:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13082
essaye de changer le sub-system dans les paramétrages du compilateur ;)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Dim 21/Nov/2010 11:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 02/Nov/2010 13:53
Messages: 46
Localisation: Corte
Merci Dobro.

Apparemment je dois faire une mauvaise manip car si je rajoute un subsystem, quand je lance la compilation, le programme s'arrête en 2 seconde sans rien montrer.
(j'ai essayé de rajouter OpenGL, Directx7, même effet)


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Dim 21/Nov/2010 21:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Tu peux mettre un code complet stp?

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Dim 21/Nov/2010 22:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 02/Nov/2010 13:53
Messages: 46
Localisation: Corte
Voici :

Code:
If Not(InitEngine3D())
  End
EndIf
 
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
InitSound()


UsePNGImageDecoder()

OpenScreen(1024,768,32,"Yom",#PB_Screen_WaitSynchronization)



Global vcon=0
Global creplan=0
Global mycam=0

Enumeration
  #camera
EndEnumeration

CreateCamera(#camera,10,5,80,50)
CameraProjectionMode(#camera,#PB_Camera_Perspective)
CameraRange(#camera,5,1500)
CameraBackColor(#camera,RGB(255,255,152))
CameraFOV(#camera,45)

Dim glups(6,2)
glups(1,1)=LoadSprite(#PB_Any,"spr\glups01.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
glups(2,1)=LoadSprite(#PB_Any,"spr\glups02.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
glups(3,1)=LoadSprite(#PB_Any,"spr\glups03.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
glups(4,1)=LoadSprite(#PB_Any,"spr\glups04.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
glups(5,1)=LoadSprite(#PB_Any,"spr\glups05.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
glups(6,1)=LoadSprite(#PB_Any,"spr\glups06.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
For i=1 To 6
  If glups(i,1)=0
    End
  EndIf
Next
glups(1,2)=CreateSprite3D(#PB_Any,glups(1,1))
glups(2,2)=CreateSprite3D(#PB_Any,glups(2,1))
glups(3,2)=CreateSprite3D(#PB_Any,glups(3,1))
glups(4,2)=CreateSprite3D(#PB_Any,glups(4,1))
glups(5,2)=CreateSprite3D(#PB_Any,glups(5,1))
glups(6,2)=CreateSprite3D(#PB_Any,glups(6,1))

nglups=1

Dim scn(3,2)
scn(1,1)=LoadSprite(#PB_Any,"scn\ecran_controle.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
scn(2,1)=LoadSprite(#PB_Any,"scn\ecran_visuel.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
scn(3,1)=LoadSprite(#PB_Any,"scn\carte.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
For i=1 To 3
  If scn(i,1)=0
    End
  EndIf
Next
scn(1,2)=CreateSprite3D(#PB_Any,scn(1,1))
scn(2,2)=CreateSprite3D(#PB_Any,scn(2,1))
scn(3,2)=CreateSprite3D(#PB_Any,scn(3,1))

fond=LoadSprite(#PB_Any,"scn\vaisseau.png",0)

Dim spor(4,2,3)
spor(1,1,1)=LoadSprite(#PB_Any,"spr\spor0_1.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
spor(2,1,1)=LoadSprite(#PB_Any,"spr\spor0_2.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
spor(3,1,1)=LoadSprite(#PB_Any,"spr\spor0_3.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
spor(4,1,1)=LoadSprite(#PB_Any,"spr\spor0_4.png",#PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
For i=1 To 4
  If spor(i,1,1)=0
    End
  EndIf
Next
spor(1,2,1)=CreateSprite3D(#PB_Any,spor(1,1,1))
spor(2,2,1)=CreateSprite3D(#PB_Any,spor(2,1,1))
spor(3,2,1)=CreateSprite3D(#PB_Any,spor(3,1,1))
spor(4,2,1)=CreateSprite3D(#PB_Any,spor(4,1,1))
spor(1,2,2)=CreateSprite3D(#PB_Any,spor(1,1,1))
spor(2,2,2)=CreateSprite3D(#PB_Any,spor(2,1,1))
spor(3,2,2)=CreateSprite3D(#PB_Any,spor(3,1,1))
spor(4,2,2)=CreateSprite3D(#PB_Any,spor(4,1,1))
spor(1,2,3)=CreateSprite3D(#PB_Any,spor(1,1,1))
spor(2,2,3)=CreateSprite3D(#PB_Any,spor(2,1,1))
spor(3,2,3)=CreateSprite3D(#PB_Any,spor(3,1,1))
spor(4,2,3)=CreateSprite3D(#PB_Any,spor(4,1,1))
For i=1 To 4
  ZoomSprite3D(spor(i,2,2),191,111)
  ZoomSprite3D(spor(i,2,3),123,74)
Next
Dim lume(8)
For i=1 To 4
  lume(i)=i
Next
For i=5 To 7
  lume(i)=8-i
Next

Dim sporon(4)
Dim sporx(4)
Dim spory(4)
sporx(0)=425
spory(0)=512
sporx(1)=714
spory(1)=624
sporx(2)=119
spory(2)=624
sporx(3)=306
spory(3)=474
sporx(4)=592
spory(4)=474

Dim actspor(4,4)
actspor(0,0)=1
actspor(0,1)=432
actspor(0,2)=520
actspor(0,3)=432+159
actspor(0,4)=520+84
actspor(1,0)=2
actspor(1,1)=730
actspor(1,2)=631
actspor(1,3)=730+160
actspor(1,4)=631+90
actspor(2,0)=2
actspor(2,1)=138
actspor(2,2)=631
actspor(2,3)=138+160
actspor(2,4)=631+90
actspor(3,0)=3
actspor(3,1)=316
actspor(3,2)=480
actspor(3,3)=316+102
actspor(3,4)=480+59
actspor(4,0)=3
actspor(4,1)=602
actspor(4,2)=480
actspor(4,3)=602+102
actspor(4,4)=480+59

activescn=1
incre=0

Dim k(20)

MouseLocate(512,384)

LoadModule(0,"mod\ambience1.s3m")
ModuleVolume(0,30)
PlayModule(0)

Dim snd(3)
snd(1)=LoadSound(#PB_Any,"snd\spor_contact.wav")
snd(2)=LoadSound(#PB_Any,"snd\viewer_sound.wav")
snd(3)=LoadSound(#PB_Any,"snd\map_sound.wav")

Dim fadesnd(3)

;Add3DArchive("tex\",#PB_3DArchive_FileSystem)
;Add3DArchive("mesh\",#PB_3DArchive_FileSystem)
;Parse3DScripts()

Dim tex(8)
Dim mat(8)
For i=1 To 8
  ;tex(i)=LoadTexture(#PB_Any,Str(i)+".jpg")
  ;mat(i)=CreateMaterial(#PB_Any,TextureID(tex(i)))
  ;MaterialShadingMode(mat(i),#PB_Material_Gouraud)
  ;MaterialFilteringMode(mat(i),#PB_Material_Trilinear)
Next

Dim mesh(3)
For i=1 To 3
  ;mesh(i)=LoadMesh(#PB_Any,Str(i)+".x")
Next

Dim conics(800,400,3) ; 1=objet conics à visiter, 2=texture, 3=Identité habitant
For y=1 To 400
  For x=1 To 800
    If Random(20)=0
      conics(x,y,1)=Random(2)+1
      conics(x,y,2)=Random(7)+1
      ; ajouter ici l'ajout d'habitants
    EndIf
  Next
Next

; A REMPLACER ================
xcon=Random(799)+1
ycon=Random(399)+1
conics(xcon,ycon,1)=Random(2)+1
conics(xcon,ycon,2)=Random(7)+1
;=============================

Repeat
 
  For i=1 To 2
    If fadesnd(i)>0
      fadesnd(i)=fadesnd(i)-25
      SoundVolume(snd(i),fadesnd(i))
    EndIf
  Next

  DisplaySprite(fond,0,0)
 
  ExamineKeyboard()
  ExamineMouse()
 
  mx=MouseX()
  my=MouseY()
  mleft=MouseButton(#PB_MouseButton_Left)
  mright=MouseButton(#PB_MouseButton_Right)
 
  xact=MouseX()-100
  yact=MouseY()+40
 
  flag=0
  For i=0 To 4
    If sporon(i)>0
      flag=1
    EndIf
  Next
 
  If flag=0 And mleft=1
    For i=0 To 4
      If flag=0 And xact>=actspor(i,1) And xact<=actspor(i,3) And yact>=actspor(i,2) And yact<=actspor(i,4)
        flag=1
        sporon(i)=1
        SoundVolume(snd(1),255)
        PlaySound(snd(1))
        If activescn=2 And i=0
          fadesnd(2)=250
        EndIf
        If activescn=3 And i=0
          fadesnd(3)=250
        EndIf
      EndIf
    Next
  EndIf
     
 
  For i=2 To 20
    k(i)=(k(i)+1)%i
  Next
 
  Start3D()
  Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
  DisplaySprite3D(scn(1,2),-124,91)
  If activescn=2
    If incre<200
      incre=incre+10
    Else
      If creplan=0
        creplan=1
      EndIf
    EndIf
    DisplaySprite3D(scn(2,2),0,0,incre)
  EndIf
  If activescn=3
    If incre<400
      incre=incre+20
    EndIf
    ZoomSprite3D(scn(3,2),800,incre)
    DisplaySprite3D(scn(3,2),((1024-820)/2),0)
  EndIf
  For i=0 To 4
    If sporon(i)>0
      DisplaySprite3D(spor(lume(sporon(i)),2,actspor(i,0)),sporx(i),spory(i))
      If k(2)=0
        sporon(i)=sporon(i)+1
        If lume(sporon(i))=0
          sporon(i)=0
          If i=0
            activescn=activescn+1
            incre=0
            If activescn=2
              SoundVolume(snd(2),255)
              PlaySound(snd(2),#PB_Sound_Loop)
            EndIf
            If activescn=3
              If creplan=2
                If IsEntity(vcon)
                  FreeEntity(vcon)
                EndIf
                vcon=0
                creplan=0
              EndIf
              StopSound(snd(2))
              fadesnd(2)=0
              SoundVolume(snd(3),255)
              PlaySound(snd(3),#PB_Sound_Loop)
            EndIf
            If activescn=4
              StopSound(snd(3))
              fadesnd(3)=0
              activescn=1
            EndIf
          EndIf
        EndIf
      EndIf
    EndIf
  Next
  DisplaySprite3D(glups(nglups,2),mx-(SpriteWidth(glups(nglups,1))/2),my,220)
  Stop3D()
 
 
  If k(5)=0
    nglups=nglups+1
    If nglups=7
      nglups=1
    EndIf
  EndIf
 
  If activescn=2
    If creplan=1
      vcon=0
      If conics(xcon,ycon,1)>0
        ;vcon=CreateEntity(#PB_Any,MeshID(mesh(1)),#PB_Material_None,0,0,0)
        ;EntityLocate(vcon,0,0,0)
      EndIf
      creplan=2
    EndIf
    If creplan=2
      ;RotateEntity(vcon,0.15,0.27,0.34,#PB_Relative)
      CameraLocate(#camera,0,0,200)
      CameraLookAt(#camera,0,0,0)
      RenderWorld()
    EndIf
  EndIf
 
 
  FlipBuffers() 

  Delay(30)
 
Until KeyboardPushed(#PB_Key_Escape)

End


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Lun 22/Nov/2010 0:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13082
je viens de tester ton code chez moi en changeant les chemins pour les sprites
puisque je n'ai pas les meme images que toi

chez moi ça marche !

tu dois t'etre trompé dans les chemins vers tes medias !!
utilise un chemin complet genre "c:\spr\glups01.png" au lieu de juste "spr\glups01.png"
je parie que ton probleme viens de ça !! ;)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Lun 22/Nov/2010 9:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 02/Nov/2010 13:53
Messages: 46
Localisation: Corte
Au départ ça marche, mais quand tu clique au milieu de l'écran (un peu en dessous), ça déclenche l'affichage du rendu de la caméra 3D (la commande Renderworld() s'active).
Et c'est à ce moment là que ça bug, l'écran devient tout jaune, la couleur de fond de la caméra.

Voici un lien vers l'archive contenant le programme complet :
http://www.basic-sombre.com/libre/Yom.rar
(Il faut appuyer sur le bouton spherique du milieu)

Si tu pouvais tester en cliquant sur le bouton sphérique du milieu en bas et me dire ce qu'il en est, ça serait cool.


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Lun 22/Nov/2010 10:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13082
je ne serai pas d'une grande aide , mon NC10 n'as pas de carte 3D :?

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Lun 22/Nov/2010 10:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 2660
Dobro a écrit:
je ne serai pas d'une grande aide , mon NC10 n'as pas de carte 3D :?

Tu n'as plus d'ordi de bureau ?

_________________
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!

http://xmas.free.fr/


Haut
 Profil  
 
 Sujet du message: Re: Renderworld ?
MessagePosté: Lun 22/Nov/2010 10:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 02/Nov/2010 13:53
Messages: 46
Localisation: Corte
Je viens de désactiver toutes les commandes d'affichage de sprites en les mettant en commentaires (2d comme 3d) et du coup la caméra fonctionne.
Je vais chercher par là...

EDIT:
Le problème vient du fait que l'on ne doit employer la commande RenderWorld() qu'avant toute opération graphique de type sprites ou sprites3D.

Du coup, j'ai trouvé la solution, mais il me faudrait un pointeur sur la backbuffer.
J'ai trouvé ce source ici dans les forums :
Code:
Procedure.l GrabSpriteEx(sprite, buffer, x, y, width, height, mode=0)
    ; netmaestro 2007
    ; Grab a Sprite from the backbuffer or visible screen
    ; buffer values: 0=backbuffer, 1=visible screen
    If buffer
        srcDC = GetDC_(ScreenID())
    Else
        srcDC = StartDrawing(ScreenOutput())
        EndIf
        trgDC = CreateCompatibleDC_(srcDC)
        BMPHandle = CreateCompatibleBitmap_(srcDC, Width, Height)
        SelectObject_( trgDC, BMPHandle)
        BitBlt_( trgDC, 0, 0, Width, Height, srcDC, x, y, #SRCCOPY)
        DeleteDC_( trgDC)
        If buffer
            ReleaseDC_(ScreenID(), srcDC)
        Else
        StopDrawing()
    EndIf
    result = CreateSprite(sprite, width, height, mode)
    If sprite = #PB_Any
        output = result
    Else
        output = sprite
    EndIf
    StartDrawing(SpriteOutput(output))
        DrawImage(BMPHandle, 0, 0)
    StopDrawing()
    DeleteObject_(BMPHandle)
    ProcedureReturn output
EndProcedure


Le problème c'est que la commande srcDC = StartDrawing(ScreenOutput()) me retourne un pointeur NULL.
Est ce que quelqu'un pourrait m'aider ? :(


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye