Page 1 sur 2

Avis aux utilisateurs de Linux

Publié : mer. 15/sept./2010 8:18
par Ollivier
Salut à vous!

Voilà, j'ai un problème car dans ce sujet ici, je sollicite l'aide des utilisateurs de Linux.

Est-ce que quelqu'un, s'il-vous-plaît (au moins 2 personnes, ce serait bien) pourrait vérifier le code de STARGÅTE que je vais poster ci-dessous?

Le but est de bien regarder la texture pendant la rotation et voir si cette texture vous semble réaliste ou pas.

Il y a 3 possibilités de réponse:
1) Les 2 textures sont identiques et légèrement tordues
2) Les 2 textures sont différentes et l'une d'entre elles est tordue, alors que l'autre est bien formée
3) Les 2 textures sont identiques et bien formées

Code : Tout sélectionner

; Auteur : STARGÅTE
InitSprite()
InitSprite3D()
InitMouse()
InitKeyboard()
OpenWindow(0, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)

  CreateSprite(1, 64, 64, #PB_Sprite_Texture)
  StartDrawing(SpriteOutput(1))
    Box(0, 0, 64, 64, $808080)
    For x = 0 To 7
    For y = 0 To 7
      If (x+y)%2 : Box(x*8, y*8, 8, 8, $FFFFFF) : EndIf
    Next
    Next
  StopDrawing()
  CreateSprite3D(1, 1)
    
Repeat
      
      ExamineMouse()
  ClearScreen(0)

  #HalfSize = 150
  #Distance = 500

  Start3D()

    a.f + MouseDeltaX() / 50.0

    z1.f = #Distance-Sin(a)*#HalfSize : z4.f=z1
    z2.f = #Distance+Sin(a)*#HalfSize : z3.f=z2
    x1.f = -Cos(a)*#HalfSize : x4.f=x1
    x2.f =  Cos(a)*#HalfSize : x3.f=x2
    j.f = (#HalfSize/#Distance) * #HalfSize
    y1.f = -#HalfSize-Sin(a)*j : y2.f=-#HalfSize+Sin(a)*j
    y3.f = #HalfSize-Sin(a)*j : y4.f=#HalfSize+Sin(a)*j
    TransformSprite3D(1, x1,y1, x2,y2, x3,y3, x4,y4)
    DisplaySprite3D(1, 200, 300)
    TransformSprite3D(1, x2,y2, x1,y1, x4,y4, x3,y3)
    DisplaySprite3D(1, 200, 300)

    TransformSprite3D(1, x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4)
    DisplaySprite3D(1, 600, 300)
    TransformSprite3D(1, x2,y2,z2, x1,y1,z1, x4,y4,z4, x3,y3,z3)
    DisplaySprite3D(1, 600, 300)

  Stop3D()
  
  StartDrawing(ScreenOutput())
    DrawText(100,50,"3D-rotation without parameter z")
    DrawText(500,50,"3D-rotation with parameter z")
  StopDrawing()
  
  FlipBuffers()
      ExamineKeyboard()
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)

Re: Avis aux utilisateurs de Linux

Publié : mer. 15/sept./2010 11:58
par Akra Laya
Moi j'ai les 2 mêmes images mais elle se defomre suivant ou je suis avec la camera.
face a la caméra elle son quasiment pas déformé et plus je me décalle plus elle se déforme.

p.s : pas très pratique pour sortir de ton prog :).

Re: Avis aux utilisateurs de Linux

Publié : ven. 17/sept./2010 18:37
par Ollivier
@Akra Laya

Merci de t'être porté volontaire.



Si d'autres utilisateurs de Linux pouvaient faire ce test, ça offrirait plus de précisions sur une amélioration à apporter à la fonction TransformSprite3D().

En espérant que ça en motive au moins un ou deux autres...

Re: Avis aux utilisateurs de Linux

Publié : sam. 18/sept./2010 0:17
par Backup
un pivotement de la cam droite-gauche (comme dire non de la tete) donne pour les 2 images le meme type de deformation ! (elle se déforme de façon identique)

ps: tu aurai pu ajouter un test de la touche esc ou du bouton droit
c'est vrais que pour sortir du prg j'ai du utiliser ALT+F4 :roll:

Re: Avis aux utilisateurs de Linux

Publié : sam. 18/sept./2010 8:09
par Ollivier
Dobro a écrit :un pivotement de la cam droite-gauche (comme dire non de la tete) donne pour les 2 images le meme type de deformation ! (elle se déforme de façon identique)
Merci d'avoir testé.
Dobro a écrit :ps: tu aurai pu ajouter un test de la touche esc ou du bouton droit
c'est vrais que pour sortir du prg j'ai du utiliser ALT+F4
J'ai rajouté le test de touche que tu demandes pour quitter plus facilement, et je ne savais pas que sous Linux, c'était aussi Alt+F4 pour quitter une application...

Re: Avis aux utilisateurs de Linux

Publié : sam. 18/sept./2010 8:43
par Backup
Ollivier a écrit :et je ne savais pas que sous Linux, c'était aussi Alt+F4 pour quitter une application...

voir ici :
http://www.linuxpedia.fr/doku.php/les_r ... essentiels

Re: Avis aux utilisateurs de Linux

Publié : sam. 18/sept./2010 22:21
par Ollivier
@Dobro

Okay merci! Mais, une pensée me parvient:

Mis à part Akra Laya et toi, les Linuxiens me font la gueule ou quoi?!?

En plus, a priori, il y a un vrai bug! Ce n'est qu'un simple code de contrôle diffusé en toute transparence, pas un troyen dans un exécutable...

Ollivier

Re: Avis aux utilisateurs de Linux

Publié : sam. 18/sept./2010 23:42
par Warkering
L'affaire, c'est que je ne peux pas fermé mon Windows avant que la licence de Delphi de mon Cégep soit accepté. Je sais pas comment ça marche, mais le monsieur m'as dit ça donc j'attends! :?

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 10:08
par flaith
Je viens de tester sous Linux Debian Lenny, je sais pas ce qui ce passe, j'ai bien les deux images identiques, mais quand je bouge la souris l'affichage est d'une lenteur !!! 8O :?

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 10:46
par Backup
flaith a écrit :Je viens de tester sous Linux Debian Lenny, je sais pas ce qui ce passe, j'ai bien les deux images identiques, mais quand je bouge la souris l'affichage est d'une lenteur !!! 8O :?
chez moi aussi , mais je pensai que c'etait du au manque de carte graph 3D dans mon nc10 :)

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 13:10
par Ulix
Comme l'a écrit Flaith, et confirmé par Dobro, c'est très lent ! Chez moi aussi ! :wink:

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 19:20
par Ollivier
@Flaith et @Ulix

Bonjour, et merci pour vos observations. Est-ce que cette lenteur est dûe à la manière de coder?

Je vois plusieurs cause à ce "nouveau" problème:

1) Le sous-système n'a pas été correctement précisé (opengl dans les sous-systèmes)
2) La séquence de dessin classique est incompatible avec OpenGL (dans ce cas, voici une correction plus bas)
3) Autre chose...

Au passage, j'ai informé ce bug de la déformation de texture sous OpenGL sur le forum anglais

Code : Tout sélectionner

; Auteur : STARGÅTE
InitSprite()
InitSprite3D()
InitMouse()
InitKeyboard()
OpenWindow(0, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)

  CreateSprite(1, 64, 64, #PB_Sprite_Texture)
  StartDrawing(SpriteOutput(1))
    Box(0, 0, 64, 64, $808080)
    For x = 0 To 7
    For y = 0 To 7
      If (x+y)%2 : Box(x*8, y*8, 8, 8, $FFFFFF) : EndIf
    Next
    Next
  StopDrawing()
  CreateSprite3D(1, 1)
    
Repeat
      
      ExamineMouse()
  ClearScreen(0)

  #HalfSize = 150
  #Distance = 500

  Start3D()

    a.f + MouseDeltaX() / 50.0

    z1.f = #Distance-Sin(a)*#HalfSize : z4.f=z1
    z2.f = #Distance+Sin(a)*#HalfSize : z3.f=z2
    x1.f = -Cos(a)*#HalfSize : x4.f=x1
    x2.f =  Cos(a)*#HalfSize : x3.f=x2
    j.f = (#HalfSize/#Distance) * #HalfSize
    y1.f = -#HalfSize-Sin(a)*j : y2.f=-#HalfSize+Sin(a)*j
    y3.f = #HalfSize-Sin(a)*j : y4.f=#HalfSize+Sin(a)*j
    TransformSprite3D(1, x1,y1, x2,y2, x3,y3, x4,y4)
    DisplaySprite3D(1, 200, 300)
    TransformSprite3D(1, x2,y2, x1,y1, x4,y4, x3,y3)
    DisplaySprite3D(1, 200, 300)

    TransformSprite3D(1, x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4)
    DisplaySprite3D(1, 600, 300)
    TransformSprite3D(1, x2,y2,z2, x1,y1,z1, x4,y4,z4, x3,y3,z3)
    DisplaySprite3D(1, 600, 300)

  Stop3D()
  
  FlipBuffers()
      ExamineKeyboard()
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 20:41
par G-Rom
pour être plus "fluide"
c'est dans cette ordre qu'il faut passer les commandes :

Code : Tout sélectionner

  ClearScreen(0)
  
  ExamineMouse()
  ExamineKeyboard()
le problème de correction de perspective sera corrigé prochainement, l'oubli à été soumis à Fred.

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 21:30
par Cool Dji
Je ne sais pas si ça peut apporter un truc mais sous Vista j'ai ça :
Je post, des fois, que tu pensais que ça marchait sans soucis sous windows
En revanche, c'est très rapide :D

Image

Re: Avis aux utilisateurs de Linux

Publié : dim. 19/sept./2010 21:38
par Ulix
@Olivier

Ton second code est beaucoup plus rapide.
Je possède une carte graphique Nvidia Gforce 6200 GT et je pensé que le rendu aurait plus fluide.
Ton code est-il conçu pour utilisé l'accélération 3D d'une tel carte ?
Ou bien tous les calculs sont-il fait par le processeur ?

Lorsque que fait dans un terminal "glxgears" pour tester le nombre de frame, j'obtiens des chiffres supérieur a 30000.
Je pense (il est vrai que j'y connais rien en 3D) que ton code n'utilise pas l'accélération matérielle ! :oops:

A + :wink: