[MAJ] Histoire d'eau (code et exe inclus)
[MAJ] Histoire d'eau (code et exe inclus)
Voici un petit test sur la nouvelle "fonctionnalité" permettant d'afficher un océan.
C'est ici : http://djes.free.fr/purebasic/water_example.zip
Edit: j'ai modifié le cube pour qu'il n'utilise plus les shaders et soit texturé de façon "normale" (UV), et j'ai enlevé l'antialiasing pour que ça ne rame pas sur les anciennes machines.
C'est ici : http://djes.free.fr/purebasic/water_example.zip
Edit: j'ai modifié le cube pour qu'il n'utilise plus les shaders et soit texturé de façon "normale" (UV), et j'ai enlevé l'antialiasing pour que ça ne rame pas sur les anciennes machines.
Dernière modification par djes le lun. 10/nov./2008 1:51, modifié 1 fois.
Code : Tout sélectionner
22:28:50: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgram.cpp (line 1079)
sinon , sans l'eau , je vois bien le cube texturé avec le logo.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
"dis, çà fait quoi d'être sur un radeau ?"
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Water example
;
; (c) 2008 - djes (http://djes.free.fr)
; & beauregard-Toulouse-2009
; ------------------------------------------------------------
;
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("test1\", #PB_3DArchive_FileSystem )
Add3DArchive("Water", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
refresh_rate.l = 60
SetRefreshRate(refresh_rate)
SetFrameRate(refresh_rate)
Parse3DScripts()
AntialiasingMode(#PB_AntialiasingMode_x2);4)
LoadMesh (1 , "cube.mesh")
CreateEntity(1, MeshID(1), #PB_Material_None)
ScaleEntity(1, 100, 100, 100)
;- hum1
naufrageT.b
naufrageY.f
camnauZ.f
mmh.f
;--- Camera
;Little computation to convert our pixels window to the % ogre
level_min_x = 0
level_min_y = 0
level_max_x = 1024
level_max_y = 768
level_width = level_max_y - level_min_y
CreateCamera(0, (level_min_x * 100) / ScreenWidth, (level_min_y * 100) / ScreenHeight, (level_width * 100) / ScreenWidth, (level_width * 100) / ScreenWidth)
cam_x.f = 0
cam_y.f = 0
cam_z.f = 4000
CameraLocate(0, cam_x, cam_y, cam_z)
CameraBackColor(0, RGB(100, 100, 255))
CameraRange (0, 1, 100000)
MoveCamera(0, 0, 10, 0)
;--- Environment
; AmbientColor(RGB(200, 200, 255))
; CreateWater(0, 0, 0, 0, 300, #PB_World_WaterMediumQuality | #PB_World_WaterCaustics | #PB_World_WaterSmooth | #PB_World_WaterFoam | #PB_World_WaterSun)
CreateWater(0, 0, 0, 0, 300, #PB_World_WaterHighQuality | #PB_World_WaterCaustics | #PB_World_WaterSmooth | #PB_World_WaterFoam | #PB_World_WaterSun)
Sun(000, 100000, -10000000, RGB(1*255, 0.4*255, 0.1*255))
SkyBox("Skywarp.png")
Fog(RGB(165, 220, 245), 0.001, 10, 1000*7)
Repeat
Screen3DEvents()
ClearScreen(RGB(0, 0, 0))
;- hum2
naufrageT+1 ; c'est cool voyez, la mer, les vagues tout çà... voyez...
If naufrageT>42:naufrageT=1:EndIf
If naufrageT>0 And naufrageT<7:naufrageY+1:camnauZ+0.1:EndIf; 1 à 6
If naufrageT>6 And naufrageT<13:naufrageY+2:camnauZ+0.2:EndIf; 7 à 12
If naufrageT>12 And naufrageT<19:naufrageY+1:camnauZ+0.1:EndIf; 13 à 18
; 19 à 24
If naufrageT>24 And naufrageT<31:naufrageY-1:camnauZ-0.1:EndIf; 25 à 30
If naufrageT>30 And naufrageT<37:naufrageY-2:camnauZ-0.2:EndIf; 31 à 36
If naufrageT>36 And naufrageT<43:naufrageY-1:camnauZ-0.1:EndIf; 37 à 42
If i.f<5000:i.f+2:EndIf
If i.f>4750 And naufrageY<150
naufrageY+1
EndIf
If naufrageY<150
EntityLocate(1, 0, -25+naufrageY, -1500+i.f)
EndIf
If naufrageY>149
EntityLocate(1, 0, -25+150, -1500+i.f)
mmh+0.2
If mmh>359:mmh=0:EndIf
RotateEntity(1, 0, mmh, 0 )
EndIf
; CameraLocate(0, 2500 + (1 + Sin(i / 2)) * 5000 * Sin(i * 0.4), 2510 + 2500 * Sin(i), 2500 + (1 + Sin(i / 2)) * 5000 * Cos(i * 0.4))
CameraLookAt(0, 0, 0, 0)
;CameraLocate(0, cam_x, cam_y+naufrageY, cam_z)
RotateCamera(0, 0, 0, -2.5+camnauZ) ; gare au mal de mer, beurp !
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
Dernière modification par beauregard le dim. 25/janv./2009 0:32, modifié 1 fois.
Excellent messieurs !
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas

~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re:
je me remet en douceur à la 3D, et effectivement , en appuyant sur bouton 3(molette), on met en pause le programme... un mise à jour pour la 4.40 se fera sentir pour continuer de rêver au bord de l'eau...Ar-S a écrit :Excellent messieurs !
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas
Re: [MAJ] Histoire d'eau (code et exe inclus)
Yaouh !
Je découvre la 3D depuis quelques jours et ça me passionne.
Certes, je mesure l'immensité du pas qu'il me reste à franchir pour parvenir à faire ce dont j'ai envie mais la combinaison PB + Ogre a l'air bien interressante...
Merci Djes pour cet exemple et beauregard pour le complément !!
Je découvre la 3D depuis quelques jours et ça me passionne.
Certes, je mesure l'immensité du pas qu'il me reste à franchir pour parvenir à faire ce dont j'ai envie mais la combinaison PB + Ogre a l'air bien interressante...
Merci Djes pour cet exemple et beauregard pour le complément !!
Only PureBasic makes it possible