:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Forums Hébergés :: > µLibrary

µLibrary Official µLibrary forum (English / Français)

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 18/02/2008, 20h43   #1
morukutsu
Membre
 
Date d'inscription: 20/03/2007
Localisation: Dijon
Messages: 36
Par défaut Problème de création d'images

(Je copie mon post de dev-fr, je n'avais pas pensé à poster sur le forum de support officiel. )

Salut @ tous.
Je suis face à un problème que je n'arrive pas à résoudre au sujet de l'utilisation avancée d'images avec l'µLib
.
Mon problème tourne au autour des fonctions :

Citation:
UL_IMAGE * ulCreateImage (int width, int height, int location, int format, int palCount)
int ulCreateImagePalette (UL_IMAGE *img, int location, int palCount)
int ulRealizeImage (UL_IMAGE *img)
int ulUnrealizeImage (UL_IMAGE *img)
void * ulLockImage (UL_IMAGE *img, UL_LOCK_REASON lockReason)
void ulUnlockImage (UL_IMAGE *img, UL_LOCK_REASON lockReason)
void ulSetImagePixel (UL_IMAGE *img, int x, int y, int pixelValue)
J'essaie de m'en servir pour générer dynamiquement une texture. Ces fonctions sont assez bien documentées mais il n'y a pas d'exemple qui les utilise :s . Du coup, je n'arrive pas bien a comprendre comment m'en servir de la bonne façon.

J'ai plusieurs questions au sujet de celles-ci :
Dans la fonction ulCreateImage, que signifie le paramètre palCount ? Avez-vous un code source d'une utilisation concrète de cette fonction ?
Mes essais se sont terminés soit pas une segfault où une image non affichée ...

J'ai regardé le code de la fonction ulCreateImage et il semblerait qu'elle crée aussi une palette. Or je suis en mode 8bits (256 couleurs palette) et j'aimerai choisir moi même les couleurs qui vont composer cette palette.
Comment je peux faire cela ?

Pour lire où écrire un pixel sur une image avec ulSetImagePixel, est-ce que je dois faire un ulLockImage avant ?
Comment exploite t-on les pointeurs retournées par ulLockImage ?

Voila, je sais que ça fait beaucoup de questions mais je galère vraiment là .
Merci d'avance !
__________________
Mon DevBlog
morukutsu est déconnecté   Réponse avec citation

Publicité

Vieux 18/02/2008, 21h34   #2
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Je ne connais pas du tout µlib, donc surement un post qui sert à rien

- A mon avis PalCount c'est le nombre de couleurs de la palette que tu as créé.
- Peut être avec ulCreateImagePalette ?
- Pas forcément si elle est en RAM, mais c'est plus sûr selon la doc.
- je dirais un peu comme ça :

Code PHP:
UL_IMAGE *image;

image ulCreateImage(blablaou ulLoadImagePNG(blabla);
void *pimage ulLockImage(imageUL_LOCK_PIXELS);
ulSetImagePixel(pimage23461);
ulUnlockImage(imageUL_LOCK_PALETTE); 
Yodajr est déconnecté   Réponse avec citation
Vieux 18/02/2008, 21h41   #3
morukutsu
Membre
 
Date d'inscription: 20/03/2007
Localisation: Dijon
Messages: 36
Par défaut

Le problème c'est que ulSetImagePixel prend en 1er paramètre une UL_IMAGE* et pas un pointeur vers un array en mémoire.
Mais merci quand même pour l'aide !

Sinon, en tâtonnant je biens d'arriver à obtenir un résultat mais j'ai du passer mon image en 16 bits... De fait, il m'est maintenant impossible de créer une image de 256*256 pixels en mémoire car elle remplit totalement la VRAM .
__________________
Mon DevBlog
morukutsu est déconnecté   Réponse avec citation
Vieux 18/02/2008, 22h44   #4
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 226
Par défaut

Salut et bienvenue sur ce forum
La pixelValue de setImagePixel dépend du type d'image en fait. En 8 bits et inférieur c'est le n° de couleur, en 16 bits c'est la couleur elle-même.
La création d'une palette dynamique pour une image se fait ainsi:
ulCreateImagePalette(tonImage, UL_IN_VRAM, nombreCouleurs);
Sinon il suffit de passer un palCount > 0 à ulCreateImage et la palette se crée en même temps que l'image (plus simple, c'est ce que je te conseille).
Pour remplir les valeurs de palette, je ne me rappelle plus s'il y a une fonction, mais tu peux faire comme ça:
u16 *palette = ulLockImage(tonImage, UL_LOCK_PALETTE);
palette[x] = RGB15(...);
ulUnlockImage(tonImage, UL_LOCK_PALETTE);
Pour modifier les pixels avec ulSetImagePixel ou ulGetImagePixel il faut d'abord locker ton image:
ulLockImage(tonImage, UL_LOCK_PIXELS);
ulSetImagePixel(tonImage, ...);
ulUnlockImage(tonImage, UL_LOCK_PIXELS);
Sinon tu peux aussi à la main en utilisant le pointeur retourné par ulLockImage. Une ligne correspond à sysSizeX pixels, chacun de taille ul_pixelWidth[tonImage->format] bits (à diviser par 8 pour avoir la taille en octets).
Brunni est déconnecté   Réponse avec citation
Vieux 18/02/2008, 23h44   #5
morukutsu
Membre
 
Date d'inscription: 20/03/2007
Localisation: Dijon
Messages: 36
Par défaut

Dac, j'ai compris maintenant .
Je retourne coder cela

Edit : Merci
__________________
Mon DevBlog

Dernière modification par morukutsu ; 19/02/2008 à 00h53.
morukutsu est déconnecté   Réponse avec citation
Vieux 27/06/2008, 10h09   #6
sdevilcry
Membre
 
Date d'inscription: 02/05/2008
Messages: 22
Par défaut

Salut, j'ai une petite question avec cette fonction :

UL_IMAGE * ulCreateImage (int width, int height, int location, int format, int palCount)

le format, c'est bien le format de mon image 8,16 bits ?

Par contre le palCount c'est quoi exactement ?
sdevilcry est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h42.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince