Avis aux utilisateurs de Linux

Codes specifiques à Linux
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Avis aux utilisateurs de Linux

Message 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)
Dernière modification par Ollivier le sam. 18/sept./2010 8:05, modifié 1 fois.
Akra Laya
Messages : 11
Inscription : sam. 29/mai/2010 16:04

Re: Avis aux utilisateurs de Linux

Message 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 :).
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Avis aux utilisateurs de Linux

Message 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...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Avis aux utilisateurs de Linux

Message 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:
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Avis aux utilisateurs de Linux

Message 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...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Avis aux utilisateurs de Linux

Message 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
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Avis aux utilisateurs de Linux

Message 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
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Avis aux utilisateurs de Linux

Message 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! :?
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Avis aux utilisateurs de Linux

Message 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 :?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Avis aux utilisateurs de Linux

Message 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 :)
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Avis aux utilisateurs de Linux

Message par Ulix »

Comme l'a écrit Flaith, et confirmé par Dobro, c'est très lent ! Chez moi aussi ! :wink:
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Avis aux utilisateurs de Linux

Message 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)
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Avis aux utilisateurs de Linux

Message 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.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Avis aux utilisateurs de Linux

Message 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
Only PureBasic makes it possible
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Avis aux utilisateurs de Linux

Message 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:
Répondre