Blender, aussi appelé Blender3D, est un logiciel libre et gratuit d’animation, de modélisation et de rendu 3D. Il dispose de fonctions avancées de modélisation, de sculpture 3D, de dépliage UV, de texturage, de gréage (rigging), d’armaturage, d’animation 3D, et de rendu. Il gère aussi l’édition non linéaire, les compositions, la création nodale de matériaux, la création d’applications 3D interactives, ainsi que diverses simulations physiques telles que les particules, les corps rigides, les corps souples et les fluides. Disponible dans de nombreuses langues, Blender est également disponible sur plusieurs plates-formes telles que Microsoft Windows, Mac OS X, GNU/Linux, IRIX, Solaris, FreeBSD, SkyOS, MorphOS et Pocket PC. De plus, c’est un programme extensible (ajout de scripts) à l’aide du langage Python
Sa version actuelle est la 2.56a
www.blender.org (site officiel)
www.blenderclan.tuxfamily.org (principale communautée française)
Génération de l'ensemble de mandelbrot et des ensembles de julia sur CPU & GPU
Affichage dans une fenetre utilisant la SDL.
Dependances : SDL.lib, SDLmain.lib, cudart.lib
4 modes d'affichage : gray-level, gray-level-reversed, RGB random, Green (comme le logo).
Navigation : zoom - unzoom, directionnelle, reinitialisation, augmenter resolution, diminuer resolution, retour en arriere
Pour représenter l'ensemble de julia associé à un point du plan : faire un clic du milieu.
Pour revenir au mandelbrot : clic du milieu n'importe où
Multiplateforme (Windows - Linux) [ j'ai jamais developpé sous mac, mais j'imagine que ça marche aussi ;) ]
Update : Support cuda pour le calcul. Editer le fichier params.h et mettre les valeurs correspondant à votre carte graphique
g_block_dim // g_grid_dim
PLATFORM : utiliser CUDA pour travailler sur GPU, CPU pour rester sur CPU.
Résultats obtenus sur le calcul de l'ensemble (le plot est limitant avec la SDL...) pour maxiter = 20, image 256x256
Un jeu du Snake banal avec la SDL et compilé avec Lazarus sous Win XP.
Points Positifs :
Gestion des événements, du son et de la SDL (pointeurs...) et algorithme du Snake;
Programme structuré (je m'étais lancé dans la POO au début mais sans succès);
Graphique pas mal :) fait sous Paint ^^ (c'est pas évident du 16x16 pixels sous Paint);
La SDL est portable donc, logiquement, le code est portable.
Points à finir :
Quand vous perdez, obligation de quitter pour relancer le jeu;
Pas de gestion du score;
Pas de gestion d'erreurs (s'il y a un problème, le programme se plante en utilisant les messages classiques de Windows);
Pas de gestion du temps (au début, le programme demande la vitesse du Snake. Sur mon ordi je dois mettre 10 pour avoir un jeu rapide, par contre sur les ordis du lycée, plus puissants, il faut mettre 50. C'est le temps d'attente en ms entre chaque rafraîchissement;
Vous ne pourrez manger que 100 pommes (je ne suis jamais allé jusque là car au début, je n''alloue que la mémoire de 100 pointeurs.
Contrôles :
Touches directionnelles pour bouger le serpent;
Espace pour quitter;
'p' pour pause.
Je crois avoir dit la plupart des choses. N'hésitez pas à tester et à noter, toute critique est bonne à prendre.
Si vous rencontrez des problèmes ou si vous avez des idées pour de quelconques améliorations, laissez des commentaires.
Merci de tester ce programme.
P.S. Dans le zip, il y a le fichier binaire pour Win.
Voici la base d'un projet utilisant la SDL 1.2 pour Code::Blocks sous Windows.
Le projet est configuré afin de démarrer rapidement une nouvelle application SDL. Aucune bibliothèque additionnelle n'a été ajoutée et donc seule la SDL est incluse. Le code source est simpliste et commenté. Il ouvre une fenêtre SDL et permet de la fermer, soit en cliquant sur la croix, soit en appuyant sur Echap.
L'avantage d'un tel projet contrairement aux différents tutoriels du net est que la SDL est incluse directement dans le projet et permet une distribution du code source simple et efficace. Pour recréer ce projet, vous même, vous pouvez vous inspirer de ce tutoriel.
Pour Linux, il ne devrait pas y avoir grand chose à modifier.
Début de code source d'un casse-brique. Ce code gère le déplacement de sprites au clavier, ainsi que la transparence.
Les images (au format PNG) sont fournies et chargées à l'aide de SDL_Image.
Code source du jeu mythique du serpent. Ce code gère le déplacement et l'agrandissement du serpent qui est implémenté utilisant une liste chaînée. Des pastilles apparaissent qu'il faut manger pour voir le serpent grandir.
Exemple d'affichage de sprites avec SDL. Ce code montre comment l'on peut gérer l'affichage de plusieurs sprites avec chacun des propriétés différentes.
Jeux développé à l'origine sur Amstrad puis sur Amiga, seul le niveau bonus a été programmé ici.
Le but est de repousser les projectiles le plus longtemps possible afin d'ammasser le maximum de points.
Le programme utilise SDL mais aussi et surtout OpenGL.
Code source d'un des plus grands jeux : Boulder Dash. L'auteur a conservé l'ambiance de l'original. La programmation s'est faite par module et cela permet d'avoir un code facilement modifiable et réutilisable.
Utilisation de la bibliothèque SDL_ttf.
Code source montrant comment faire des rotations d'une surface. Ce code propose deux fonctions qui calculent la rotation d'une surface. Une fonction recalculant la taille de la surface pour ne pas perdre d'information. Les deux fonctions allouent une nouvelle surface, il faudra s'occuper de la libération de mémoire. Voici les prototypes des deux fonctions :
//Ne recalcule pas la taille, les bords seront perdus
SDL_Surface* SDL_RotationCentral(SDL_Surface* origine, float angle);
//Calcule la taille de la surface, les bords ne seront pas perdus
SDL_Surface* SDL_RotationCentralN(SDL_Surface* origine, float angle);
Dernière remarque :
Il faut noter que l'on parcourt la surface de destination et non la surface d'origine pour forcer chaque pixel de destination a avoir une couleur à peu près correct (à peu près comme une rotation en informatique est dans la plupart des cas non bijective). Alors que si l'on parcourait les pixels de la surface d'origine et on déterminait sa nouvelle position, il pourrait y avoir des trous noirs dans la surface de destination.
Code source montrant comment faire des rotations et zoom d'une surface. Ce code montre les calculs nécessaires pour faire ce genre de transformation. L'application propose une démonstration en faisant tourner une surface sur elle-même.
Dernières remarques :
Les rotations soft c'est bien mais si on en veut beaucoup c'est du précalculé dans les étapes d'animation des sprites (avec les gigas de ram de maintenant on peut y aller) ou openGL/D3D car même les machines actuelles ont leurs limites... Enfin 60 images sur une rotation en 800*600 sans assembleur c'est déjà pas trop mal;
Pour tester la vitesse de rendu mieux vaut figer l'angle... mais pas sur 0 pour éviter que le compilateur optimise trop de choses, bref prudence;
Faire les tests plusieurs fois car il peut y avoir des variations sensibles et durables d'une éxécution à l'autre (ce qui donne des résultats curieux).