Librairie Effect
Mais comme on a pu le constater à travers plusieurs exemples, il faut que le codeur ASM soit trés bon pour réussir à pondre un code plus performant que celui issu du compilateur PureBasic.
@Soldat : merci pour ton travail, tu es décidément trés productif !
@Soldat : merci pour ton travail, tu es décidément trés productif !
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Nouvelle version 
J'ai ajouté 2 fonctions pour
- Mélanger 2 couleurs, utile pour faire un dégradé
- Ajouter 2 couleurs (pour par exemple affiché une image sur une autre avec un effet de fondu)

J'ai ajouté 2 fonctions pour
- Mélanger 2 couleurs, utile pour faire un dégradé
- Ajouter 2 couleurs (pour par exemple affiché une image sur une autre avec un effet de fondu)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 12
- Inscription : ven. 20/août/2004 11:00
Vraiment sympa
tu pourrais p'tre pondre un truc vraiment bon pour la gestion des lumières, continue ^^
j'avais pas mal bossé sur la gestion des trajectoires et orientations des entités&caméra, pour un projet de jeu 3d que j'ai jamais fini; et ton code me donne l'idée de mettre mes travaux dans une dll (en fait c'est même en lisant ton code que je viens de comprendre comment faire une dll lol) en fait Le Soldat m'as inspiré =)
J'ai deux commandes en tête:
FollowEntity(): Camera qui suit une entité, a la manière d'un jeu a la 3e personne, on peut gerer la souplesse de la camera dans son déplacement, son angle par rapport a l'entité, la hauteur et son temps de réaction. le seul prob est qu'il ya pas de collision avec le décor ou les mesh, donc ca marche bien qu'a l'exterieur pour l'instant...
EntityFocus(): Commande pour gerer l'orientation de l'objet vers un point, en fonction des axes.
J'en reparlerais au moment venu, et bravo Le soldat =)
tu pourrais p'tre pondre un truc vraiment bon pour la gestion des lumières, continue ^^
j'avais pas mal bossé sur la gestion des trajectoires et orientations des entités&caméra, pour un projet de jeu 3d que j'ai jamais fini; et ton code me donne l'idée de mettre mes travaux dans une dll (en fait c'est même en lisant ton code que je viens de comprendre comment faire une dll lol) en fait Le Soldat m'as inspiré =)
J'ai deux commandes en tête:
FollowEntity(): Camera qui suit une entité, a la manière d'un jeu a la 3e personne, on peut gerer la souplesse de la camera dans son déplacement, son angle par rapport a l'entité, la hauteur et son temps de réaction. le seul prob est qu'il ya pas de collision avec le décor ou les mesh, donc ca marche bien qu'a l'exterieur pour l'instant...
EntityFocus(): Commande pour gerer l'orientation de l'objet vers un point, en fonction des axes.
J'en reparlerais au moment venu, et bravo Le soldat =)
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Bon, j'ai mis en place la rotation et la symétrie d'image
La librairie s'appelle Effect (penser à supprimer l'ancienne qui s'apelle ColorEffect) et elle est dispo sur mon site.
voici la rapidité du bazar avec une image de 1000 * 1000 pixels sur un 900mhz :
- 230 ms pour la symétrie
- 266 ms pour la rotation
je pense que c'est très honnête comme vitesse
La librairie s'appelle Effect (penser à supprimer l'ancienne qui s'apelle ColorEffect) et elle est dispo sur mon site.
voici la rapidité du bazar avec une image de 1000 * 1000 pixels sur un 900mhz :
- 230 ms pour la symétrie
- 266 ms pour la rotation
je pense que c'est très honnête comme vitesse

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
ah oui tiens

Code : Tout sélectionner
ProcedureDLL.l GetImageBits(ImageID, HList) ; Transfert d'une image vers un tableau
Protected bmi.BITMAPINFO, Hdc.l, Resultat, Mem, n, nn, bm.BITMAP
Resultat = 0
GetObject_(ImageID, SizeOf(BITMAP), @bm.BITMAP)
bmi\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER)
bmi\bmiHeader\biWidth = bm\bmWidth
bmi\bmiHeader\biHeight = bm\bmHeight
bmi\bmiHeader\biPlanes = 1
bmi\bmiHeader\biBitCount = 32
bmi\bmiHeader\biCompression = #BI_RGB
Mem = AllocateMemory(bm\bmWidth * bm\bmHeight * 4)
If Mem
Hdc = CreateCompatibleDC_(GetDC_(ImageID))
If Hdc
GetDIBits_(Hdc, ImageID, 0, bm\bmHeight, Mem, @bmi, #DIB_RGB_COLORS) ; on envoie la liste dans l'image
ReleaseDC_(0, Hdc)
Resultat = ImageID
EndIf
; On convertit la liste dans le bon format
For n = 0 To bm\bmHeight - 1
For nn = 0 To bm\bmWidth - 1
CopyMemory(Mem + nn * 4 + (bm\bmHeight - 1 - n) * bm\bmWidth * 4 + 2, HList + n * 4 + nn * bm\bmHeight * 4, 1)
CopyMemory(Mem + nn * 4 + (bm\bmHeight - 1 - n) * bm\bmWidth * 4 + 1, HList + n * 4 + nn * bm\bmHeight * 4 + 1, 1)
CopyMemory(Mem + nn * 4 + (bm\bmHeight - 1 - n) * bm\bmWidth * 4, HList + n * 4 + nn * bm\bmHeight * 4 + 2, 1)
Next
Next
FreeMemory(Mem)
EndIf
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 64
- Inscription : lun. 07/févr./2005 11:18
D'où sortent les procédures CreateCompatibleDC GetDIBits ...
Très interressant tout çà. Pour ma gouverne, et puisque je commence à m'y plonger, d'où sortent les fonctions du type, GetObject_ ,CreateCompatibleDC_ ,GetDIBits_ , ReleaseDC_ ( je ne les trouve pas dans l'aide incluse de PureBasic)
Où puis-je trouver un descriptif succint.. Merci
Où puis-je trouver un descriptif succint.. Merci

-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Bon, une nouvelle fonction dans la lib qui permet de faire des rotation d'image avec n'importe quel angle
2°
27°
98°
etc ...
Le tout avec de l'antialiazing (du lissage si vous préférez)
Aperçu des fonctions de rotation et de symétrie

2°
27°
98°
etc ...
Le tout avec de l'antialiazing (du lissage si vous préférez)
Aperçu des fonctions de rotation et de symétrie

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Tiens j'ai essayé les libs données par Flype précédemmentFlype a écrit :ceci dit peut etre rentrerais tu en "concurrence" avec d'autres userlib existentes faite en ASM
il me semble bien qu'il en existe... je v voir...
vu sur purearea.net :
lib "effects" http://www.purearea.net/pb/download/use ... ffects.zip
lib "rotation" http://www.purearea.net/pb/download/use ... ations.zip
lib "X2D" http://www.purearea.net/pb/download/userlibs/X2D.zip
essaye et juge par toi meme
ta lib resterais cohérente en y rajoutant du traitement d'images
Pour une rotation de 90° d'une image de 1000*1000pixels sur un 900 mhz
ma lib : 240 ms
Lib Rotations : 500 ms (y'a pas de symétrie d'image la dedans) et elle est lente car elle travaille avec tous les angles (comme je viens de le faire mais sans lissage)
Pour la lib effects donnée par Flyppe, c'est idem que moi car elle utilise les mêmes fonctions

la X2D pas essayé
Du coup, je demande si il ne serai pas interressant d'optimiser avec de l'assembleur ma lib.
Est-ce que des pros de l'assembleur seraient partant ?
Si oui, je balance le code et on optimise tout ça

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]