µLua DS - Forum officiel | Official forum Forum Index

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Chargement d'image
Goto page: 1, 2, 3  >
 
Post new topic   Reply to topic    µLua DS - Forum officiel | Official forum Forum Index -> Section française -> Annonces
Previous topic :: Next topic  
Author Message
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Fri 25 Feb 2011 - 11:38    Post subject: Chargement d'image Reply with quote

Voila n'ayant pas les droits de poster dans le forum Annonce Ben maintenant si :p (Reylak), je post ici pour vous dire que je vient de faire une avancé qui va plaire à certain et à d'autres aussi.

Après de longue réflexions sur le problème, et ayant envie de le faire, je me suis penché sur le problème des images, j'ai donc fait quelque modif pour passer la VRAM à 256Ko et le VRAM palette à 32Ko. J'ai modifié la fonction Image.destroy() et il se trouve que avec l'aide d'un script qui charge en boucle des images, je n'ai pas eu de problème de mémoire vidéo. Maintenant pour aller plus loin, je vous fournit mon microlua pour que vous testiez par chez vous avec mon script de test.

Le script de test fonctionne de la sorte:

il charge le catalogue des images dans le dossier "img" contenu dans le meme dossier que le script

en appuyant sur le:
bouton A, on charge des images VRAM en boucle mais sans jamais les supprimers, sa plante assez rapidement au bout de 11 avec les images que j'utilise pour le script.
bouton B, on charge des images en VRAM en boucle en suppriment à chaque fois l'ancienne image pas de plantage vidéo au bout de 40 images, je suis pas aller plus loin.
bouton X, on charge des images en RAM en boucle sans jamais supprimer, sa affiche des images blanches au bout de 11 mais sans planter.
bouton Y, on charge des images en RAM en boucle en supprimant l'ancienne, sa marche comme pour le bouton B.

A comprendre, en boucle signifie qu'il faut appuyer sur le même bouton pour changer d'image.

Téléchargement.


[EDIT]  Je me suis emballé, je vient d'executer le même script avec le microlua officiel et sa marche pareil sauf que avec les boutons A et X il plante avant ( 5 ieme image), j'ai donc juste grossit la VRAM pour charger plus d'image en même temps, se qui est bien, je vais donc maintenant me pencher sur la vérification de la mémoire et interdire de charger plus qu'elle ne peut pour éviter le plantage.
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
Publicité






PostPosted: Fri 25 Feb 2011 - 11:38    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Reylak
Administrateur

Offline

Joined: 24 Nov 2008
Posts: 2,838
Localisation: Toulouse

PostPosted: Fri 25 Feb 2011 - 12:57    Post subject: Chargement d'image Reply with quote

Dommage pour "l'emballage" :p Mais si au moins on peut charger/décharger en boucle, c'est déjà ça Okay
J'vais voir comment ça tourne sur la mienne...


EDIT : et bien félicitations, chez moi le comportement est exactement le même !
_________________


Plein d'infos sur le SourceForge !


Back to top
Visit poster’s website MSN Skype
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Fri 25 Feb 2011 - 13:21    Post subject: Chargement d'image Reply with quote

En même temps, ce ne sont que des images JPG, à essayer avec d'autres format. Il suffit de les copier dans le dossier img.
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
thermo_nono
Modérateur

Offline

Joined: 31 Dec 2008
Posts: 2,415
Localisation: La Géhenne

PostPosted: Fri 25 Feb 2011 - 14:24    Post subject: Chargement d'image Reply with quote

c'est un petit pas pour l'homme, mais c'est un bon en avant pour microlua. ^^ 
.. et au passage, je pense que tu devrais disposer des droits de post dans la section annonce du fait de tous les apports dont tu es l'auteur. 


Okay
_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Back to top
Visit poster’s website MSN
Ced-le-pingouin


Offline

Joined: 16 Jan 2009
Posts: 559
Localisation: Belgique

PostPosted: Fri 25 Feb 2011 - 15:02    Post subject: Chargement d'image Reply with quote

Super de voir que les recherches approfondies continuent sur ce problème de VRAM Okay

Je trouve normal que si on détruit les images, ça fonctionne également avec l'ancien microlua.

Un 1er pas avait été fait avec l'augmentation de la VRAM dispo. C'est quand même déjà mieux.

Mais effectivement, il est normal que si on ne libère jamais la mémoire (VRAM ou RAM)... bah au bout d'un moment ça foire.

Mais justement, le fait de pouvoir *détecter* si la mémoire disponible sera capable de contenir la prochaine image, ce serait la touche finale, car ça évite le plantage total de l'application, ou même l'adaptation de l'appli en fonction de la mémoire restante. Comme tu le dis, si on arrive à détecter ça, on pourrait l'implémenter dans Image.load, et lui faire retourner nil si le chargement a échoué. Eventuellement, on pourrait également rendre dispo pour les scripts Lua cette fonction qui renvoie la quantité de mémoire dispo, comme ça le programmeur peut prévoir à l'avance, aussi (pas seulement sur l'échec d'un Image.load)


Back to top
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Fri 25 Feb 2011 - 17:20    Post subject: Chargement d'image Reply with quote

Justement, je vient de voir que pour le renvois de nil si l'image n'as pu etre charger c'est totalement faisable car en fait risike à mis dans la fonction load.image tout à la fin, un truc qui dit que si tu peut pas charger l'image bah tu plante en disant je peut pas charger unetelle.
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
Reylak
Administrateur

Offline

Joined: 24 Nov 2008
Posts: 2,838
Localisation: Toulouse

PostPosted: Fri 25 Feb 2011 - 18:34    Post subject: Chargement d'image Reply with quote

En effet, si on peut éviter le plantage et juste être averti que ça n'a pas marché, c'est mieux Wink

Sinon, j'ai bougé le thread, et tu peux poster dans les Annonces Papy (en fait t'es modo... J'ai pas eu envie de me salir les mains avec des permissions pas très souples x) Soit responsable ! :p )
_________________


Plein d'infos sur le SourceForge !


Back to top
Visit poster’s website MSN Skype
Fantasix
Modérateur

Offline

Joined: 26 Apr 2010
Posts: 1,317
Localisation: SCREEN_UP, en -1, -1

PostPosted: Sat 26 Feb 2011 - 01:29    Post subject: Chargement d'image Reply with quote

Ouh oui *-*

Ca veux donc dire que le clignotement d'image ne devrait normalement plus survenir, ou bien ?

En tout cas c'est cool de voir que certaines personnes bossent dessus ! Je t'encourage !

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Back to top
Visit poster’s website
Reylak
Administrateur

Offline

Joined: 24 Nov 2008
Posts: 2,838
Localisation: Toulouse

PostPosted: Sat 26 Feb 2011 - 13:03    Post subject: Chargement d'image Reply with quote

Si je me rappelle bien, le clignotement d'images vient de la µLib ; j'ai vu dans un fichier d'aide que s'il y avait trop de vertices, ça pouvait clignoter.
Donc pour le clignotement... Ben en fait je sais pas x) Peut-être qu'il sera "atténué", ou plus difficile a obtenir.
_________________


Plein d'infos sur le SourceForge !


Back to top
Visit poster’s website MSN Skype
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Sat 26 Feb 2011 - 17:12    Post subject: Chargement d'image Reply with quote

Merci pour les permissions Reylak je vais faire au mieux pour que tu n'ai rien à dire.

Non, sa va pas joué sur le clignotement de l'écran malheureusement, sa va juste évité le plantage si on charge une image en trop.
Bon voilà, c'est fait mais c'est pas encore sa, la fonction load.image retourne maintenant nil si elle à pas charger l'image parce qu'il n'y avait plus de place et fait toujours une erreur si l'image n'est pas du bon format.
J'ai implémenter 4 autres fonctions dont 2 qui retournent des chiffres bizard que je n'ai pas encore compris donc je n'en parlerai pas ici, les 2 autres qui fonctionne sont:
  - ds_system.CurrentVramFree() qui retourne un entier en byte indiquant la place en VRAM restante.
  - ds_system.CurrentPalFree() qui retroune en entier en byte indiquant la place en Memoire palette restante.

J'ai aussi modifié les chemin de recherche du require(), il cherche maintenant et dans l'ordre donné ci-dessous dans les dossiers:

on va prendre comme exemple : (require("clavier")

  - dossier courant/libs/clavier.lua
  - /lua/scripts/clavier/clavier.lua
  - dossier courant/clavier.lua
  - /lua/libs/clavier.lua
  - /lua/libs/clavier/init.lua
  - /lua/scripts/clavier.lua
  - /lua/scripts/clavier/init/lua

Voilà , j'ai modifié le zip à télécharger dans le premier post pour télécharger c'est la bas
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
Reylak
Administrateur

Offline

Joined: 24 Nov 2008
Posts: 2,838
Localisation: Toulouse

PostPosted: Sat 26 Feb 2011 - 17:40    Post subject: Chargement d'image Reply with quote

C'est parfait ça aussi pour le require !

Tu as mis tout ça sur le GC ? Tu as les droits non ? Alors éclate-toi ! ^^
_________________


Plein d'infos sur le SourceForge !


Back to top
Visit poster’s website MSN Skype
Fantasix
Modérateur

Offline

Joined: 26 Apr 2010
Posts: 1,317
Localisation: SCREEN_UP, en -1, -1

PostPosted: Sat 26 Feb 2011 - 19:52    Post subject: Chargement d'image Reply with quote

Wah Papy *-*

J'ai néanmoins un problème qui subsiste :

J'ai beau faire les io.open()/io.close() comme il faut, le jeu freeze après en avoir fait 10 ... >.>'

Peut-etre que c'est également un problème comme le destroy, j'sais pas ... Si jamais t'as une idée x)

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Back to top
Visit poster’s website
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Sat 26 Feb 2011 - 20:39    Post subject: Chargement d'image Reply with quote

a pas compris le rapport avec les images, y a pas besoin de io.open pour charger une image, c'est la fonction image.load qu'il faut utilisée et image.destroy pour la detruire

haaa peut être que sa n'a pas de rapport. Avec mon script Editeur, je rencontre pas se problème, l'ouverture et la fermeture des mes scripts ne fait pas d'erreur, peut être que tu ouvre trop de chose et que tu sature la mémoire avant de faire les closes, je sait pas, montre ton script pour voir (je suis et met 10 de plus pour voir)
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
Fantasix
Modérateur

Offline

Joined: 26 Apr 2010
Posts: 1,317
Localisation: SCREEN_UP, en -1, -1

PostPosted: Sat 26 Feb 2011 - 21:12    Post subject: Chargement d'image Reply with quote

Oui en effet ça n'a aucun rapport avec les images, mais comme ça parlait de mémoire x)

Voici le code :

Code:
math.randomseed(os.time())
nb_map = 15
tileset = Image.load("spr.png", VRAM)
chosen_map = 1

function generate()
   local aEcrire = ""
   
   for i=1, nb_map do
      screen.print(SCREEN_DOWN, 0, 0, "Génération des maps : "..i.."/"..nb_map)
      
      file = io.open("map_"..i..".map","w")
      io.output(file)
      aEcrire = ""
      for l = 1, 16 do
         for c = 1, 16 do
            aEcrire = aEcrire..math.random(1,3).."|"
         end
         aEcrire = aEcrire.."\n"
      end
      
      aEcrire = string.sub(aEcrire,1,-2)
      io.write (aEcrire)
      io.close()
      
      render()
   end
   file = nil
end
function mapLoader()
   map_tab = {}
   for i=1, nb_map do
      map_tab[i] = ScrollMap.new(tileset, "map_"..i..".map", 16, 16, 16, 16)
   end
end

generate()

while not Keys.newPress.A do
   Controls.read()
   
   screen.print(SCREEN_DOWN, 0,0, "Génération effectuée avec succès")
   screen.print(SCREEN_DOWN, 0,8, "Appuyez sur la touche A")
   
   render()
end


mapLoader()

while not Keys.newPress.Start do
   Controls.read()
   
   ScrollMap.draw(SCREEN_DOWN, map_tab[chosen_map])
   
   if Keys.newPress.Left and chosen_map > 1 then
      chosen_map = chosen_map - 1
   elseif Keys.newPress.Right and chosen_map < nb_map then
      chosen_map = chosen_map + 1
   end
   
   if Keys.newPress.X then
      generate()
   end
   
   screen.print(SCREEN_UP,0,0,"FPS : "..NB_FPS)
   screen.print(SCREEN_UP,0,8,"Map n°"..chosen_map)
   
   render()
end

for i=1, nb_map do
   ScrollMap.destroy(map_tab[i])
   map_tab[i] = nil
end
map_tab = nil
Image.destroy(tileset)
tileset = nil
collectgarbage()



Son but est de générer automatiquement et aléatoirement plusieurs maps, pour le moment basiques, certes.

Ouai j'sais, ça parait bizarre de vouloir faire ça mais, j'veux tester quelques trucs x)

La dernière chose affichée sur la DS est : "Génération des maps : 15/15", et à partir de là ça freeze. J'ai déjà rencontré ce problème avec d'autres de mes programmes également, mais là j'ai pas d'alternative x)

Si tu veux le tester :


Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Back to top
Visit poster’s website
Papymouge
Modérateur

Offline

Joined: 10 May 2009
Posts: 693
Localisation: Vittel (88)

PostPosted: Sat 26 Feb 2011 - 21:51    Post subject: Chargement d'image Reply with quote

ok essais sans le io.output, moi je ne l'ai encore jamais utilisée cette fonction.

je fait simplement
fichier = io.open("nom","w")
fichier:write("des trucs\n")
fichier:close()

voilà je fait pas plus compliqué.
_________________
La page de mes projets
L'ancienne page de mes projets


Back to top
Display posts from previous:   
Post new topic   Reply to topic    µLua DS - Forum officiel | Official forum Forum Index -> Section française -> Annonces All times are GMT + 1 Hour
Goto page: 1, 2, 3  >
Page 1 of 3

 
Jump to:  

Index | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group