1

Bon alros que je me trimbalais sur le site de la tict, j'ai lu un article sur la deformation de texture ...
La première routine trouvé etait:
//------------------------------------------------------------------------------
// (dest_x,dest_y) ... position in screen memory where the strip should be drawn
// texture_x       ... column number of texture which should be used as input
// dest_height     ... destination height (1..64)  NOTE: 0 is an invalid height
//------------------------------------------------------------------------------
void RenderStrip(short dest_height,short dest_x,short dest_y,short texture_x) {
    double delta_y   = 64.0/dest_height;
    double texture_y = 0.0;
    COLOR  color;
    short  actheight;

    for (actheight=0; actheight < dest_height; actheight++) {
        color = GetTexturePixel(texture_x,(short)texture_y);
        texture_y += delta_y;
        SetDestinationPixel(dest_x,dest_y+actheight,color);
    }
}

cette routine utilise des doubles... et cela ralentit donc notre chere ti sad
je me demande à quoi ca sert d'utiliser des nombres a virgules, alors qu'une routine comme cela serai plus rapide et aussi éfficace:
void RenderStrip(short dest_height,short dest_x,short dest_y,short texture_y) {
    char  color;
    short  actheight;
    for (actheight=0; actheight < dest_height; actheight++) {
        color = XGPxlTest((actheight<<7)/dest_height,texture_y);
        XGPxlPut(dest_x+actheight,dest_y,color);
        XGPxlPut(dest_x+actheight,dest_y+1,color);
    }
}

Le resultat est strictement identique, il me semble nonfou (dans l'esprite.. car dans la deriere routine, c'est une deformation horizontal...)

Dans cette routine, le seul probleme étant le divu que l'on ne peut pas optimisésad
Est ce que qqn a une autre idée d'optimisation.. excepté de passer la routine en asm et de faire un tableau des pxls a tester (ce qui prend un max de ram) ou alors de chager les fonctions de pxl...

NB: une idée serait d'incrémenter par: dest_height, ce qui rendrai automatiquement le bon résultat.. vous avez mieux?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

2

Oui, mais c moins bien pour les trucs très grands... (autant de divisions que de pixels en hauteur)

THE solution c qd même la virgule fixe...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

oué smile
Quelle idée d'utiliser des floats (et en + sur un 68K :/) !

4

heu les nombres a virgule fixe sont facilement utilisable en C ? (pas de swap...sad )
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

5

ce sera toujours plus rapide qu'une division grin

et au pire tu optimises le source en ASM juste après

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

6

erf avant d'optimiser, il faut que je comprenne sick
d'ailleur je sais meme pas comment implanter un systeme à virgule fixe..
faut faire un teste du genre: if(a>1000) {a-=1000; b++; }?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

7

ça ou les << et >>

8

oui, si tu veux pas optimiser tu fais des long avec des << et >>, c bcp plus simple smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

il suffit d'ajouter 2^16 a chaque fois non??
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

10

De multiplier par 2^16.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

11

ben ajouter un decalage tongue

12

moué c'est pas très exact comme terme roll
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

13

ben multiplier non plus ... en fait

14

ah si smile ça exactement le même effet qu'une multiplication oui

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

Allez va te coucher nEUrOne tongue
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

16

Menfin.. faut pas multipliser mais ajouter ?!:!;:;,,K?!: non..
j'ajoute 1 a ma partie entiere..
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

17

fou
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

18

pkoi pas utiliser SWAP ?
bonc'est sur on est obligé de travailler sur des nombres à 32bits mais bon...
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

19

parce que si l'on utilise swap, on est obligé de passer par l'asm or, le passage par l'asm des parametre (ici %d0 ) par exemple est plutot long comparé aux autres methodes (enfin il me semble)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

20

mais le compilo ne va pas optimiser les x << 16 ou x >> 16 en swap ?
avatar

21

Pollux a écrit :
ah si smile ça exactement le même effet qu'une multiplication oui


bizarre, me souviens pas avoir dis que le resultat différent ... non

22

neur>
extrait de la discussion :

neur: ben ajouter un decalage
thib: moué c'est pas très exact comme terme neur: ben multiplier non plus ... en fait

de 2 choses l'une :
- soit tu croyais comme Thibaut que TiMad voulait parler de décalage de 16 bits, et à ce moment-là multiplier était un terme strictement synonyme (et plus correct en français que 'ajouter un décalage')
- soit tu avais compris que TiMad voulait parler d'addition et à ce moment-là ça n'a absolument aucun sens de dire 'ajouter un décalage' puisqu'on ajoute un nombre, pas une opération smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

23

TiMad
a écrit : parce que si l'on utilise swap, on est obligé de passer par l'asm or, le passage par l'asm des parametre (ici %d0 ) par exemple est plutot long comparé aux autres methodes (enfin il me semble)


ben faut coder en asm et pas se faire chier à trouver des astuces dependantes de compilo...
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

24

azerty83
a écrit : mais le compilo ne va pas optimiser les x << 16 ou x >> 16 en swap ?

Si. En swap tout seul si possible, en swap+clr.w ou clr.w+swap sinon.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité