CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[SDL] Lecture/Ecriture de pixels

Aldebran
Aldebran
Niveau 10
25 janvier 2006 à 16:54:11

J´ai une surface avec SDL. Je charge une image sur cette surface en VRAM. Comment faire pour connaitre les composantes RGBA d´un pixel de coordonnée (x;y) et comment modifier les composantes RGBA de ce même pixel ?

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2006 à 17:05:22

Regarde mon tuto sur la promenade §2.A.2
récupere le ficheir futils.cpp

tu trouveras dedans des fonctions pour lire/ecrire un pixel, récupérer les composantes RGBA, et refaire ce que tu veux.
N´oublie pas, avant de lire un pixel d´utiliser la fonction Lock()
Utilise Unlock avant de reblitter

Note : si le but de ta surface est de la lire, met la en RAM et non en VRAM.
Note : il est maladroit d´utiliser une image a la fois pour le blitting et la lecture directe : le plus rapide est de l´avoir en double (un coup en RAM, un coup en VRAM)

Aldebran
Aldebran
Niveau 10
25 janvier 2006 à 17:26:07

C´est bon, j´ai trouvé les deux fonctions :

ulong GetPixel(SDL_Surface*, int, int);
void PutPixel(SDL_Surface*, int, int, ulong pixel);

Par contre, ces fonctions me semblent pas mal complexe et je n´ai pas compris ce que retournais comme valeur la fonction GetPixel et je n´ai pas compris ce qu´il fallait passer en 4ème argument dans la fonction PutPixel.

PS : Merci du conseil :) Car je compte juste utiliser SDL pour lire et écrire sur une image mais pas pour l´afficher, alors si la mettre en RAM c´est mieux, bah tant mieux :)

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2006 à 17:42:40

Pour ce qui est de la rapidité, la VRAM est optimisée pour le blitting (affichage) rapide, mais ne sait pas extraire les pixels un par un.
La RAM sait le faire, mais est lente pour l´affichage.

D´ou l´utilité, si une image est en VRAM et que tu veux accéder aux pixels, de la rappatrier en RAM : c´est opération s´appelle le "LOCK"
Le UNLOCK est pour remettre l´image (modifiée) en VRAM.

Si tu es direct en RAM (dans ton cas), alors tu n´as pas besoin de lock (a priori)

Pour ce qui est du ulong passé dans PutPixel, et récupéré par GetPixel, c´est un unsigned long :
une variable de 4 octets en fait.

Cette variable est en fait le pixel : 4 octets = 1 octet pour le rouge, 1 octet pour le vert, 1 pour le bleu, 1 pour le alpha
Chacune de ces couleurs primaires est une valeur entre 0 et 255 qui représente la luminosité de chacune
(va dans paint, fait "couleurs personnalisées" et tu verras cela, ainsi que les nombres associés (dans paint, pas de canal Alpha)

Les fonctions en dessous : Pixel PR, PB etc... te permettent de décomposer et recomposer un pixel :)
(je te conseille de travailler en 32 bits)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment