Page 1 sur 1

Clipping graphique

Publié : mar. 27/avr./2021 18:27
par pasbel
Bonsoir
Est-il possible de copier une zone graphique rectangulaire en mémoire, représentée par ses coordonnées et ses dimensions, afin de la restituer ensuite, suite par exemple à l'affichage d'un objet graphique de façon temporaire ?
Je suppose que dans PureBasic, comme dans certains autres langages, l'affichage d'une petite partie graphique est plus rapide que de de ré-afficher tout l'écran (ou la fenêtre)... j'ai vu quelques trucs dans mes recherches, mais pas clairs pour moi.

Re: Clipping graphique

Publié : mar. 27/avr./2021 22:22
par case
regarde du coté de
GrabDrawingImage()
GrabImage()
si j'ai bien compris ce que tu recherche

Re: Clipping graphique

Publié : mar. 27/avr./2021 22:40
par pasbel
Je vais regarder ça.
Merci de ta réponse.

Re: Clipping graphique

Publié : jeu. 29/avr./2021 11:43
par Ar-S
note : Et si tu fais de la 2D, l'équivalent est GrabSprite()

Re: Clipping graphique

Publié : jeu. 29/avr./2021 14:16
par pasbel
Ce serait plus ça effectivement, je sauvegarde ma partie d'écran, j'affiche la boite d'info, une fois terminé, j'affiche le sprite au même endroit.
J'étais du coup partie pour mettre mes pixels dans un tableau pour les mémoriser et les réafficher. Mais inutile de réinventer la roue.
Merci beaucoup

Re: Clipping graphique

Publié : sam. 08/mai/2021 21:59
par Ollivier
case a écrit : mar. 27/avr./2021 22:22 regarde du coté de
GrabDrawingImage()
GrabImage()
si j'ai bien compris ce que tu recherche
GrabDrawingImage() semble avoir un bug sur W10 DirectX. Pour l'utiliser sans bug, il faut provisoirement faire appel au sous-système opengl.
https://www.purebasic.fr/english/viewto ... =4&t=77209

Re: Clipping graphique

Publié : sam. 08/mai/2021 22:09
par pasbel
Merci de ta réponse, je vais essayer.
Il faut que je regarde au niveau l'openGL, j'ai tenté d'utiliser des script dans les exemples OpenGL, et je n'ai que des messages d'erreurs.
Je n'ai pas poussé pour le moment plus loin les investigations de ce côté par manque de temps.
Je n'ai pas la version enregistré de PureBasic, même si je compte l'acheté, est-ce lié ???
Encore merci pour ta réponse, je garde ça sous le coude.

Re: Clipping graphique

Publié : sam. 08/mai/2021 22:41
par Ollivier
pasbel a écrit : sam. 08/mai/2021 22:09 Merci de ta réponse, je vais essayer.
Il faut que je regarde au niveau l'openGL, j'ai tenté d'utiliser des script dans les exemples OpenGL, et je n'ai que des messages d'erreurs.
Je n'ai pas poussé pour le moment plus loin les investigations de ce côté par manque de temps.
Je n'ai pas la version enregistré de PureBasic, même si je compte l'acheté, est-ce lié ???
Encore merci pour ta réponse, je garde ça sous le coude.
Il y a un discernement à faire pour opengl.

Du plus simple au plus compliqué

1) utiliser le sous-système opengl. C'est transparent et ça ne change rien au langage à utiliser. C'est juste une option à rajouter dans le menu de l'éditeur.
Menu [Compiler]
Sous-menu [Options de compilation]
Saisie [Sous-système] : taper 'opengl' et cliquer [Ok]
Résultat : la compilation utilisera opengl au lieu de Microsoft DirectX pour afficher les graphiques accélérés.
La version démo de Purebasic autorise ça, et ça permet de ne pas voir GrabDrawingImage() buguer.

2) utiliser les fonctions opengl. Là, ce n'est plus dispo en démo sauf via la librairie Library (LoadLibrary() etc...) mais la syntaxe est lourde. En version licenciée, toutes les fonctions disponibles de l'OS sont directement exécutables juste en rajoutant un tiret '_' à la fin du nom.

Code : Tout sélectionner

JeSuisUneFonctionExterne_()
; Appelle la fonction JeSuisUneFonctionExterne si elle existe.
OpenGL est aussi intégré à Windows donc ses fonctions (à OpenGL) sont disponibles et exécutables comme ça. Mais ce n'est pas du script OpenGL.

3) Il y a enfin les script OpenGL, pour les programmeurs chevronnés en OpenGL. C'est du langage C stocké dans des chaînes, et que certaines fonctions OpenGL (donc des fonctions externes) vont compiler et faire exécuter via le GPU (processeur graphique). Ça libère le CPU, vu que c'est la carte graphique qui s'en charge, et c'est spécifique au texturing : les images déformées en temps réel sur les faces 3D. Il n'y a pas d'exemple de script OpenGL dans la doc : seuls quelques rares tests d'utilisation sur le forum anglais. Les codes, pour des résultats rudimentaires sont très lourds, vu que du C apparait cloisonné entre des guillemets de chaîne, et qu'il faut l'interfacer (rajouter une routine pour transmettre les informations de PureBasic vers ce code en C). Et il n'y a pas de retour possible d'information : on transmet au GPU, et il exécute, sans pouvoir retouner de valeurs d'échecs ou de succès. C'est donc vraiment difficile à mettre en oeuvre, et à étudier.

Re: Clipping graphique

Publié : dim. 09/mai/2021 8:00
par pasbel
Cool, je pensais qu'il manquait un truc sur l'installation ou la configuration de ma carte graphique, après je ne m'inquiétais pas, je voulais juste voir l'affichage avec OpenGL.
Je compte acquérir la licence sous peu de toute façon. Pour l'instant je teste les fonctionnalités que j'aimerai avoir dans mon futur programme, ça me permet de prendre des repères.
Merci pour toutes ces infos.