Bonjour à tous je fais de la progrmmation en pascal avec lazarus (https://www.lazarus-ide.org) afin de tester la compatibilité de mes applications entre Windows et un environnement linux, je me suis tourné vers Manjaro qui à un gros avantage ; Lazarus est disponible dans les dépots, ce qui facilite son installation et ces mises à jour.
Actuellement je programme une librairie multimedia, contenant une gestion d'images (bitmap), gestion audio avec OpenAL et pour la suite un moteur 3D sera basé sur OpenGL (version 4.0 et sup) ou directement avec le nouveau standard Vulkan (je ne sais pas trop encore)
Mon soucis actuel est que je ne peux (n'arrive) pas à afficher une image avec transparence avec GTK 2.0.
Avec une petite appli maison je suis rendu compte que l'affichage sous Manjaro est configuré en 24bits d'ou le problème. J'ai essayé de modifié directement mon fichier ect/X11/mwhd.d/nvidia.conf mais cela à fait planter Manjaro.
Ma question est donc la suivante est-il possible de passer le mode de couleur en 32bits ?
Si non ben je verrais si je peux trouver des infos sur les fonctions avancées de X11/GTK et j'essayerai plus tard avec QT et GTK 3.0.
Merci d'avance pour vos réponses
Dernière modification par Erwanil y a 6 ans, modifié au total 1 fois.
Raison :Sujet résolu (non coché par l'auteur).
Bonjour.
Typiquement sur toutes distribution Gnu/linux, en rajoutant linux32 devant une commande, celle-ci s'exécutera en mode 32 bits .
Exemple: linux32 vlc &
Ça fonctionne , mais ça renvoie quelques erreurs...
...........
[00007fb6180300d0] egl_x11 gl error: cannot select OpenGL API
[00007fb62cc74010] avcodec decoder: Using NVIDIA VDPAU Driver Shared Library 390.48 Wed Mar 21 23:47:29 PDT 2018 for hardware decoding
...........
Pour le rendu de couleur, je ne sais pas si c'est possible.
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!
Ok je vais tester. Dans tous les cas cela semble vraiment un problème récurrent tout langage (python C++, ect) confondu. Il semblerai y avoir quelques solutions avec la librairie Cairo. Je vais faire plus de recherches dans ce sens et également avec GTK 2.x ou la solution semble être de faire un copie du fond de la fiche et mixer le tout avant d'afficher, mais ce n'est vraiment pas une solution élégante et performante.
D'après ce que j'ai pu lire seulement certain "X Server" supporte la transparence, mais je n'ai pas trouvé de références sur les drivers ou version
Merci
Dernière modification par BeanzMasteril y a 6 ans, modifié au total 1 fois.
Sous Linux c'est normal, l'affichage ne mentionne qu'une profondeur de 24 bits, c'est à dire les trois canaux R, G et B et pas le canal alpha pour la transparence.
[ 4.286] (II) RADEON(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 4.286] (==) RADEON(0): Depth 24, (--) framebuffer bpp 32
[ 4.287] (II) RADEON(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps)
[ 4.287] (==) RADEON(0): Default visual is TrueColor
[ 4.287] (**) RADEON(0): Option "TearFree" "on"
[ 4.287] (==) RADEON(0): RGB weight 888
[ 4.287] (II) RADEON(0): Using 8 bits per RGB (8 bit DAC)
On peut afficher sans problème des images avec de la transparence sous Xfce, qui est un environnement GTK2.
N'étant pas développeur, je ne peux te dire comment ça fonctionne, je pense que c'est Gdk.pixbuf qui gère ça.
lemust83 a écrit : ↑il y a 6 ans
Bonjour.
Typiquement sur toutes distribution Gnu/linux, en rajoutant linux32 devant une commande, celle-ci s'exécutera en mode 32 bits .
Exemple: linux32 vlc &
Ça fonctionne , mais ça renvoie quelques erreurs...
...........
[00007fb6180300d0] egl_x11 gl error: cannot select OpenGL API
[00007fb62cc74010] avcodec decoder: Using NVIDIA VDPAU Driver Shared Library 390.48 Wed Mar 21 23:47:29 PDT 2018 for hardware decoding
...........
Pour le rendu de couleur, je ne sais pas si c'est possible.
Hum, je crois que ça n'a rien à voir avec le problème :-\
@beanzmaster: tu devrais peut-être poster ta question sur les forums de Lazarus/FreePascal ou sur ceux de developpez.net ?
Dernière modification par GoustiFruitil y a 6 ans, modifié au total 1 fois.
Actuellement je suis sous KDE et je vois bien de la transparence lorsque que je déplace mes fenêtre par exemples.
Donc il doit bien y avoir une solution.
GDX.PixBuf est déprécié . Par exemple pour afficher un bouton arrondi avec un masque pas de soucis. Mais si mon image est composé d'un dégrader Alpha alors là l'affichage est incorrecte et il m'est impossible de créer un masque correcte.
Merci pour vos pistes. Je vais voir du coté du forum de FreePascal pour essayer de trouver une solution par programmation.
bonjour
[HS]
Merci de me faire revenir 30 ans dans le passé : pascal est mon premier langage (comme beaucoup de monde à mon époque). Et merci à pascal qui m'a apporté de la rigueur donc qui me sert encore grandement aujourd'hui.
Lazarus/gtk2 gère très bien la transparence sous linux, si on utilise un objet Timage avec un png. Ici tu parles uniquement de ton moteur basé sur OpenGL ! il ne faudrait pas faire de la mauvaise pub à Lazarus Lazarus génère des programmes graphiques sous gtk2/3 et même sous qt5 (depuis peu) sans changement de code (on en parle jamais ici et oui il n'y a pas que C, python et bash sous linux).
Non je connais mais je développe ma propre solutions justement pour la gestion des bitmaps
papajoke a écrit : ↑il y a 6 ans
Lazarus/gtk2 gère très bien la transparence sous linux, si on utilise un objet Timage avec un png.
Ben non en fait, pas pour ce que je souhaite faire et le TBitmap est un vrai gouffre à problème pour des choses plus poussées que d'afficher une image et là encore c'est pas gagné à tous les coups
papajoke a écrit : ↑il y a 6 ans
Ici tu parles uniquement de ton moteur basé sur OpenGL ! il ne faudrait pas faire de la mauvaise pub à Lazarus Lazarus génère des programmes graphiques sous gtk2/3 et même sous qt5 (depuis peu) sans changement de code (on en parle jamais ici et oui il n'y a pas que C, python et bash sous linux). https://lazarus.developpez.com/actu/194 ... ur-OpenGL/
Non ici mon problème n'a rien avoir avec GLScene, c'est un tout autre projet
GTK 3.0 est pour l'instant encore à l'état de "Larve". Pour QT il faut que je fasse des tests afin de comparer les comportements
papajoke a écrit : ↑il y a 6 ans
je rejoins GoustiFruit, pour le forum developpez.net il y a une communauté Lazarus mais ... tu en fais partie
Jipété est justement beaucoup sous linux/gtk2
Oui j'en fait partie, je connais très bien Jipete et sur ce sujet il sera autant dans les choux que moi. Surtout si je ne peux rien faire du coté de la configuration de l'OS. On en a déja eu pas mal de discussion sur le sujet des bitmaps et tout le tointoin.
Bref au fil de mes recherches une seule solution se profile, c'est copier et mixer le fond avant d'afficher mon image sous Linux.( Pas besoin sous Windows l'affichage est en 32bits par defaut et il y a une fonction spéciales pour afficher des images avec transparence)
Je marque le sujet comme résolu.
Merci de votre aide. Et si le pascal vous dit je peux vous aider aucun problème, rejoignez moi sur developpez.com