![]() |
|
![]() |
![]() |
![]() | Donate | ![]() |
![]() |
![]() |
Ouvrir sur le forum | Recherche | Messages du jour | Marquer les forums comme lus |
µLibrary Official µLibrary forum (English / Français) |
Publicité |
![]() |
|
Outils de la discussion | Modes d'affichage |
![]() |
#1 | |
Membre
Date d'inscription: 02/05/2008
Messages: 22
|
![]() Salut tout le monde, voila avec mon groupe de projet on a toujours de gros probleme avec la vram ... bref je vais vous expliquer pourquoi.
Au début, on charger en ram des images de 16xx*12xx (me souviens plus exactement combien) et on créer une map avec ça, on arriver a afficher la map mais des qu'on voulais afficher un sprite en plus, bah c'était fini.. J'ai donc eu l'idée de réduire la map et le sprite, on est donc passer a une image de 512 * 512 et d'un sprite de 16*16 au lieu de 32*32. Comme tout est en puissance de 2 ça allège le total ![]() Ce qui bloque : J'ai créer une image qui me prendra tout l'écran tu haut afin de m'en servir en tant qu'inventaire, le problème, si je blite en même temps l'image dans l'ecran du bas l'image de 512 * 512, l'une des deux ne s'affichera pas ... L'idee : C'est de charger en ram l'image de 512*512, et de creer une image simple de 256*191 en vram, avec laquelle je vais faire une copie en memoire d'un pointeur sur l'autre, donc utiliser un memcpy ![]() Le soucis est qu'on a du mal a comprendre comment brunni a stocker l'image en ram et comment on pourrai récupérer les donner nécessaire que l'on veut copier sur notre pointeur temporaire afin d'afficher une partie d'image désirer ![]() exemple : Citation:
J'espère que j'ai été compréhensible ![]() merci de votre soutiens |
|
![]() |
![]() |
Publicité |
![]() |
#2 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 226
|
![]() Si ton image fait 512x512, alors en mémoire c'est un tableau de 512 lignes de 512 pixels, les lignes étant à la suite les unes des autres.
Forcément si copies 256 * 191 avec memcpy tu copies 48896 octets, c'est à dire que comme chaque pixel fait 1 octet (8 bits) 48896 pixels. Comme chaque ligne fait 512 pixels tu copies en fait 95.5 lignes de l'image source vers l'image destination. Problème: l'image de destination n'a pas la même largeur, donc imaginons que l'image source fait en fait 8 pixels et l'image de destination 4, en copiant l'image suivante: 0 1 2 3 4 5 6 7 8 9 a b c d e f Tu auras sur l'image destination: 0 1 2 3 4 5 6 7 8 9 a b c d e f Ce qui n'est certainement pas ce que tu veux. Tu dois plutôt copier l'image ligne par ligne, en prenant soin de sauter les 256 pixels à droite de chaque ligne qui ne te servent à rien. |
![]() |
![]() |
![]() |
#3 |
Membre
Date d'inscription: 02/05/2008
Messages: 22
|
![]() Merci brunni j'avais pas penser a ca
![]() On s'y remet demain ![]() merci encore ! |
![]() |
![]() |
![]() |
#4 | ||||||
Membre
Date d'inscription: 02/05/2008
Messages: 22
|
![]() hum en faite ça marche pas du tout..
j'ai voulu essayer quelque chose : Citation:
Citation:
Maintenant si je fait : Citation:
Mon image est toujours en 512*512 en 8 bits format png. J'ai essayer de voir dans ton drawing.c comment tu allouer la mémoire et je vois que tu fais comme ca : Citation:
Autre question (j'essay de vraiment comprendre comment sont stocker les donner en ram et vram de la ds) size = (ul_pixelSizes[format] * img->sysSizeX * img->sysSizeY) >> 3; Pourquoi réduire la taille de (2^3) ? car au final ca donnerai size = (8 * size_x * size_y) / 2^3; nan ? Edit : j'ai compris pourquoi ca segfaulter quand je faisait : var->toscale[1], vu que UL_IMAGE est une struct il n'y a qu'une adresse en memoire de cettre structure, du coup c'est pas vraiment la bonne valeur a taper ![]() Redit : Citation:
J'ai commencer a avoir un leger rendu au niveau de la copi en etudiant la lib png, masi c e4st pas encore ca, j;ai du oublier un detail, :s voici le bout de code : Citation:
![]() Nouvel edit : Erreur de ma part, j'ai inverser les pointeur a ce niveau la : p_dest += ((var->toscale->sysSizeX * 8) >> 3); deviens += ((var->bg->sysSizeX * 8) >> 3); p_src += ((var->bg->sysSizeX * 8) >> 3); deviens += ((var->toscale->sysSizeX * 8) >> 3 nouvel apercu : ![]() Dernière modification par sdevilcry ; 30/06/2008 à 15h59. |
||||||
![]() |
![]() |
![]() |
#5 | |
Membre
Date d'inscription: 02/05/2008
Messages: 22
|
![]() juste un petit up pour qu'on voit que le post a été mis a jour
![]() Un ami a refait ma boucle de cette facon : Citation:
Dernière modification par sdevilcry ; 30/06/2008 à 16h28. |
|
![]() |
![]() |
![]() |
#6 |
Membre confirmé
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
|
![]() Juste pour signaler, la uLib a un bug dans la gestion des palettes: supprimer une palette de la mémoire moisit généralement les palettes chargées avant et/ou après celle supprimée. J'ai déjà fait remonter le bug à Brunni.
|
![]() |
![]() |
![]() |
#7 | |
Membre confirmé
Date d'inscription: 10/11/2005
Localisation: ...
Messages: 1 464
|
![]() Citation:
![]() Bon à savoir ! ![]()
__________________
"S'il n'y a pas de solutions c'est qu'il n'y a pas de problème ..." < mon devblog > ... < ![]() ![]() |
|
![]() |
![]() |
![]() |
Liens sociaux |
Publicité |
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
Outils de la discussion | |
Modes d'affichage | |
|
|
![]() |
||||
Discussion | Auteur | Forum | Réponses | Dernier message |
[Divers] PMP (Portable Game & Media Player) : La nouvelle console cheap! | vgiant | Articles | 46 | 07/01/2010 13h46 |
![]() |
GuZnaK | Articles et Tutos | 34 | 08/12/2007 22h24 |
![]() |
Dakiz le blanc | Archives - Divers (NDS) | 6 | 26/07/2007 20h56 |
![]() |
Bobby Sixkilla | Tutoriels | 5 | 14/11/2006 04h40 |