5 pièce(s) jointe(s)
[ANN] BZScene : bibliothèque multimédia 2D, 3D & audio pour Lazarus et FPC
Bonjour à tous,
cela fait un bon moment maintenant que j'en parle ici et là dans ce forum. J'ai le plaisir de vous faire part que je viens enfin de mettre en ligne les sources [Version Alpha] de cette bibliothèque spécialisée.
Petite Histoire :
L’accès aux bitmaps par GLscene est confus et il subsiste des bugs (conversion Delphi=>Lazarus)
De plus la gestion des bitmaps avec FPC et la LCL est quelques peu "capricieuse".
Mixer les possibilités de GLScene en lui rajoutant une gestion des bitmaps optimisée. Tout était bénef !
Il m'a donc également semblé évident de rajouter les fonctionnalité de la librairie "GraphiEx"
de Mike Lischke (http://www.soft-gems.net/) qui est le créateur initial de GLScene.
La base de tout ce "beanz" en autres, a commencé, il y a bientôt plus de 3 ans
Passionné par tout ce qui à un rapport avec le traitement d'image, les effets en temps réel, la 3D et l'audio, ce fût naturel pour moi de commencer cette aventure.
C'est bizarre des fois de voir comment le temps passe et de se rendre compte que certaines choses ; même en informatique ne change pas.
La méthode ici pour gérer et manipuler une image le plus rapidement possible est la même qu'il y a plus de 20 ans sous DOS avec les Modes X/Y. La méthode reste quasi identique :D
De quoi se refaire des demoscenes, des jeux 2D à l'ancienne facilement... ;) avec de très bonnes performances.
Couplé à OpenGL/Vulkan voir même DirectX, ça peux faire mal.
Description rapide :
BZScene est divisé en neuf groupes principaux, afin de faciliter le débogage et le développement en général.
- Core : Contient les unités communes à la bibliothèque
- Dependencies : Contient les unités externes utilisée, comme par exemple Freetype, PasJpeg... )
- Maths : Contient les unités découlant de mathématique vectorielles et de base. Ces unités sont optimisée et utilisent les instructions SIMD : SSE/AVX
- Image : Contient les unités relatives à la gestion et la manipulation des bitmaps
- Audio : Contient les unités relatives à la gestion du son
- Utils : Contient des unités qui regroupent des méthodes utiles dans différents domaines)
- Engine : Contient les unités des moteurs de rendu 2D et 3D. "encore en cours de dev"
- Components : Contient les unités des composants pouvant être installés dans l'EDI
- DevTools : Contient des unités utiles pour le développeur
Les capacités générales de BZScene :
2D
- Manipulation des bitmaps uniquement en 32Bits au format de couleur RGBA ou BGRA (Linux / Windows) afin d'optimiser les performances d'affichage
- Affichage avec ou sans transparence en fonction du Système et de l'interface (gtk, qt, carbon,...)
- Convertion des couleurs dans plusieurs formats(de 1 à 128 bits par pixel) :
- rgba, bgra, hsl, hsv, (_les modes cmyk, cie, yuv, lab, lch... seront supporté dans le futur_) - Formats d'image supportés en lecture :
- BMP, JPEG, PNG, TGA, PCX, XPM, PGM, PBM, PGM, GIF, WEBP
- Autres formats supportés dans le futur* : , APNG, MNG, ICO, CUR, DDS, KTX, TIFF, PCD, PSD, XCF,IFF/LBM, FLI/FLC, CUT..._ - Formats d'image supportés en écriture (pour le moment) : BMP, TGA, JPEG
- Formats d'image supportés en lecture et écriture :
- BMP, TGA et JPEG
- _Autres formats supportés dans le futur_ : PNG
- Accès aux pixels optimisé
- Capacité de dessiner des formes diverses :
- lignes, rectangles, cercles, polygones, textes, avec ou sans adoucissement - Plusieurs méthodes de remplissage :
- couleur unie, dégradé, ou par placage de texture - Nombreux filtres sur les couleurs (+ de 50) disponibles :
- Luminosité, Saturation, Inversion, Niveaux de gris, ... - Filtres de segmentation, détection des contours :
- par seuillage, Canny, Marr Hildreth, Gradient, Boolean... - Appliquer des effets spéciaux :
- Twirl, Transformation polaire, sinuosidale... - Plusieurs modes de transformations :
- Stretch, StretSmooth, wnSample, Resample, rotation, mirroir... - Mode de fusion :
- Normal, Add, Sub, Mul, Difference, Average, Overlay, Screen... - filtres d'interpolations supportés :
- Box, Hermit, Cubic, Lanscoz, Mitchell, Hamming, Kayser... - plus plein d'autres petites choses que je vous laisse découvrir
3D
Pour le moment pas de 3D, c'est en cours de développement
Audio
- Moteur audio supporté :
- OpenAL - Formats audio supportés en lecture seulement :
- Wav, mp3, ogg, module (mod, xm, s3m...)
Afin que cette bibliothèque puisse être utilisée rapidement j'ai énormément commenté les interfaces (une aide sera donc disponible dans l'EDI lors de complémentation du code).
De plus j'ai également généré un documentation à l'aide de "PASDOC" celle-ci est complète à plus de 80%.
A titre d'information, les commentaires à eux seul représente environ 20% du total des lignes de code.
A noter, je n'ai pas encore testé intensivement BZScene sous Linux et dans des environnements 32 bit, il se peut donc que des bugs mineurs peuvent apparaître.
Quelques captures d'écran
Pour ce qui est de l'installation et de comment commencer à utiliser BZScene je vous laisse vous référer en visionnant la documentation présente dans le dossier "Documentation" (original comme nom, non ?) de BZScene en ouvrant le fichier "Index.html"
Merci d'avance de votre soutien et toutes vos suggestions et contributions future dans l'amélioration ce projet.
N'hésitez pas à me poser toutes vos questions
et hop pour finir la première partie de "Old School Is Back"
1 pièce(s) jointe(s)
Première corrections - Fixe la compatibilité avec Linux
Bonsoir à tous je viens de mettre à jour les 4 dépôts
https://github.com/jdelauney/BZScene
- Corrections majeures pour la comptabilité avec Linux
- Corrections de quelques bugs mineurs
- Mise à jour de la documentation
https://github.com/jdelauney/BZScene-Samples
- Ajout de deux exemples de jeux
- Ajout de trois nouveaux exemples
https://github.com/jdelauney/BZScene-Samples
- Correction de bugs, pour la compatibilité avec Linux
https://github.com/jdelauney/LittleAlchemist
- Correction de bugs mineurs et ajout de fonctions
Quelques captures d'écran réalisées sous Linux (désolé pour la résolution)
Des captures des exemples (Linux et Windows) sont disponibles dans les dossiers de chaque projet.
Vous pouvez directement les voir dans les dépôts Github en taille réelle. :zoubi:
Pièce jointe 566055
A Bientôt
Jérôme