Clipping graphique

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

Clipping graphique

Message 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.
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: Clipping graphique

Message par case »

regarde du coté de
GrabDrawingImage()
GrabImage()
si j'ai bien compris ce que tu recherche
ImageImage
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

Re: Clipping graphique

Message par pasbel »

Je vais regarder ça.
Merci de ta réponse.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Clipping graphique

Message par Ar-S »

note : Et si tu fais de la 2D, l'équivalent est GrabSprite()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

Re: Clipping graphique

Message 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
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Clipping graphique

Message 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
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

Re: Clipping graphique

Message 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.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Clipping graphique

Message 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.
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

Re: Clipping graphique

Message 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.
Répondre