Bizarre dans le sens ou quand je ne touche pas au sripte3d (aucun effet de rotation ou autre) j'ai une qualité d'image exécrable.
voir ce code qui fait une copie d'écran pour l'afficher en srite3d dans un screen
avec Sprite3DQuality(0) , c'est bon
mais avec Sprite3DQuality(1), c'est moche

Code : Tout sélectionner
Structure InfoSprite
x.l ; Position X
y.l ; Position Y
s.l ; Numéro du sprite
a.f ; Angle de rotation
EndStructure
; On récupère la taille de l'écran
If ExamineDesktops()
Ecran_Largeur = DesktopWidth(0)
Ecran_Hauteur = DesktopHeight(0)
ProfondeurCouleur = DesktopDepth(0)
Else
End
EndIf
; On fait une copie d'écran
DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput())
BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT)
StopDrawing()
ReleaseDC_(0, DC)
; On ouvre l'openscreen
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSprite3D() = 0
MessageRequester("Erreur", "Impossible d'initialiser la souris ,le clavier ou l'écran. Vérifiez la présence de DirectX 7 ou supérieur.", 0)
End
EndIf
; ****************************************
; Oula, avec ce param à 1, c'est moche moche moche
Sprite3DQuality(1)
; normalement, le filtrage bilinéaire n'intervient que si la taille de l'image à changer et est de mailleur qualité que ça
; ****************************************
If OpenScreen(Ecran_Largeur, Ecran_Hauteur, ProfondeurCouleur, "Rotation") = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran.", 0)
End
EndIf
; On découpe la copie d'acran en carré
#Carre = 64
CarreX = Round(Ecran_Largeur / #Carre, 1) - 1 ; Nombre de carré
CarreY = Round(Ecran_Hauteur / #Carre, 1) - 1
Dim Ecran.InfoSprite(CarreX, CarreY) ; On redim la liste des sprites
For n = 0 To CarreX
For nn = 0 To CarreY
Temp = CreateSprite(#PB_Any, #Carre, #Carre, #PB_Sprite_Texture) ; Création du sprite
; Temp = LoadSprite(#PB_Any, "test.bmp", #PB_Sprite_Texture)
Ecran(n, nn)\x = #Carre * n ; Positoion du carré
Ecran(n, nn)\y = #Carre * nn
StartDrawing(SpriteOutput(Temp)) ; On dessine le carré
DrawImage(UseImage(0), -Ecran(n, nn)\x, -Ecran(n, nn)\y)
StopDrawing()
Ecran(n, nn)\s = CreateSprite3D(#PB_Any, Temp)
Next
Next
Repeat
ClearScreen(0, 0, 0)
Start3D()
For n = 0 To CarreX
For nn = 0 To CarreY
DisplaySprite3D(Ecran(n, nn)\s, Ecran(n, nn)\x, Ecran(n, nn)\y, 255)
Next
Next
Stop3D()
; On lit les évènements clavier
ExamineKeyboard()
FlipBuffers()
Until KeyboardPushed(#PB_Key_All)
