Texture alpha avec la 4.70

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

Texture alpha avec la 4.70

Message par comtois »

pouvez vous tester ce code et me dire s'il fonctionne correctement avec la version 4.70 ? Il faut l'enregistrer dans votre répertoire PureBasic /Examples/3D

Vous devriez voir 3 cubes avec un trou sur les faces , vive les textures Alpha qui permettent ce genre de fantaisie :)

[EDIT]
J'ai testé avec une carte NVIDIA sous Windows, et je me demande si ça fonctionne aussi avec une carte ATI ou sous Linux ou OS X ?

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - CreateTexture
;
;    (c) 2012 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 1

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
  
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Packs/Desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    KeyboardMode(#PB_Keyboard_International)  
    
    AmbientColor(RGB(255,255,255))
    
    ; Mesh
    ;
    CreateCube(0, 30)

    ; Texture
    ;
    For i = 0 To 2
      Read.i R : Read.i G : Read.i B: Read.i A
      Read.f x : Read.f y : Read.f z
      CreateTexture(i, 256, 256)
      StartDrawing(TextureOutput(i))
      DrawingMode(#PB_2DDrawing_AllChannels | #PB_2DDrawing_AlphaBlend)
      Box(0, 0, 256, 256, RGBA(0, 0, 0, 255))
      Box(4, 4, 248, 248, RGBA(R, G, B, A)) 
      Circle(127, 127, 50, RGBA(0, 0, 0, 0))
      StopDrawing()
      CreateMaterial(i, TextureID(i))
      MaterialBlendingMode(i, #PB_Material_AlphaBlend)
      CreateEntity(i, MeshID(0), MaterialID(i), x, y, z)
    Next
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 0, -100, 50)
    CameraLookAt(0, 0, 0, 1)
    
    ; SkyBox
    ;
    SkyBox("desert07.jpg")
    
    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
      
      For i = 0 To 2
        RotateEntity(i, 1, 1, 2-i, #PB_Relative)
      Next
      
      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

DataSection
  Data.i 255, 0, 0, 127
  Data.f -10, 0, 5
  Data.i 0, 0, 255, 127
  Data.f 10, 0, 5 
  Data.i 0, 255, 0, 127
  Data.f 0, 0, -5
EndDataSection  
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.
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: Texture alpha avec la 4.70

Message par kelebrindae »

:D ça marche nickel sous XP 32 bits avec une ATI Radeon HD 5970! :D
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Texture alpha avec la 4.70

Message par venom »

Pareille chez moi (voir signature) :wink:






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

Re: Texture alpha avec la 4.70

Message par comtois »

C'est une bonne chose, ça fonctionne avec NVIDIA et ATI sous différentes version de Windows, reste à savoir si c'est ok sous Linux et Mac OS.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Texture alpha avec la 4.70

Message par blendman »

chez moi, je crois que ça marche aussi (win xp, nvidia), mais on pourrait avoir quelques détails pour savoir ce que c'est sensé faire?
Car les cubes sont "faussement" transparents, car on ne voit pas l'intérieur ou les 3 autres extérieures (coté caché).
Mais c'est peut être normal :).

Cela dit, même comme ça c'est intéressant.
Il faudrait essayer avec des png et canal alpha pour voir si ça fonctionne ;).
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Texture alpha avec la 4.70

Message par comtois »

Là je suis au bureau, j'essaierai de faire une copie d'écran ce soir pour te montrer le résultat. Normalement tu devrais voir 3 cubes transparents avec un trou sur chaque face car je trace un cercle complètement transparent avec alpha = 0.

Si tu vois un cercle noir c'est qu'il y a un problème quelque part ...

Est-ce que tu as comparé le résultat entre la 4.70 et la 4.60 par exemple ?
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 :

Re: Texture alpha avec la 4.70

Message par comtois »

Finalement je viens de prendre le temps de faire une image, voila ce que tu devrais obtenir
Image
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 : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Texture alpha avec la 4.70

Message par venom »

Moi c'est bien ce que j’obtiens avec la 4.70.
En revanche en 4.60 les trou sont remplacer par des rond noir :wink:







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Texture alpha avec la 4.70

Message par blendman »

c'est aussi ce que j'obtiens :)

En gros, ça corrige un bug lié à l'alpha c'est ça (bug présent dans la 4.6) ?
Répondre