OUI/NON???
--> NON.
Il faut mettre une adresse.
N´aie pas peur d´utiliser de la mémoire, sache qu´elle peut etre écrite et effacée a volonté.
Fait un malloc, un new ou un tableau statique de 1000 pour lire une ligne.
Si tu detectes que cette ligne est inutile, tu n´es pas obligé de la garder :
- soit tu deletes le bloc mémoire, et tu passes a la suite...
- soit, et c´est mieux, tu gardes le meme bloc, et tu réécris par dessus
la fonction fseek sert a te déplacer a un offset ( une adresse) que tu définis. Elle sert surtout dans les fichiers dit " binaires" c´est a dire, pas les fichiers textes ![]()
Meme si dans les fichiers textes, tu peux utiliser fseek, je pense que c´est maladroit ![]()
Le but est de lire ligne par ligne. Ensuite, tu poses tes données dans un buffer temporaire si tu veux ![]()
merci bien pour ta patience et tes reponses; je vais faire comme tu dis.
Voila , j´ai une question assez dure , et surtout beaucoup trop pour moi , comment peut on chercher dans un fichier . txt une phrase commencant par par exemple " 123" en sachant que ce serait ( de la premiere a la derniere ligne) des chiffre ecrist dans l´ordre croissant?
et comment faire de maniere a ce que le chiffre que l´on veuille ecrire dans un fichier soit dans " l´ordre alphabetique?" exemple , 123 se mettrait en dessous de 124 et aussi de 122.....
Et si possible avec les otpions de l´include fstream
Merci d´avance
JYY -> J´ai beau essayé de me creuser la tête je n´arrive vraiment pas.
Je peux te coller où j´en suis rendu :
http://rafb.net/paste/results/CZyypU21.html
Je suis presque sûr de ma fonction TransparentSurface...Elle lit les pixels, et change l´alpha en 255 pour ceux qui sont du RGB donné ( j´ai peut-être chié la partie BIGENDIAN mais comme je teste sur du LITTLEENDIAN je m´en serais pas rendu compte)
Alors, dis-moi où se situe le problème s´il te plaît
( Si t´as besoin d´explications chuis là)
Une petite correction à mon Paste, changer à la ligne 112 le 3ème argument qui était un 3 par un 4 !
Ca n´arrange pas le problème mais c´est mieux ![]()
J´ai fait un petit test chez moi avec ma lib a moi, je t´avais dit une betise pour le glAlphaFunc : met ça a la place de GL_LEQUAL
glAlphaFunc(GL_LESS , 128);
Ah ça marche !
Merci bien !
J´pense que je peux virer le else qui fait un putpixel avec un alpha de 0 non ? Vu que lors de la création de la surface tous les Alpha sont mis à 0, je perds du temps à replacer le même pixel je pense :\
Ptival > normalement oui ( je pense que oui d´ailleurs)
cependant, je dirais que si tu le laissais, ce ne serait pas grave :
en effet, tu perdrais 1 fraction de seconde, or, le chargement de l´image se fait hors de la boucle principale, toute optimisation que tu fais hors de la boucle se verra a peine ![]()
Oui mais bon...Pis de toute façon mon truc était mal fait, je faisais un |= ( Uint8)0, or j´aurais du faire un &= pour mettre tout à 0 ; )
Enfin voilà, j´viens de me faire mon p´tit header pour charger une texture avec SDL et OpenGL, sous la forme d´un fichier PNG ( enfin IMG_Load devrait gérer les autres mais rien n´est garanti, surtout avec des formats " destructifs" ! )
Je la walle si ça peut servir à quelqu´un :
http://rafb.net/paste/results/yvefpu56.html
PS :
Les fonctions getpixel et putpixel ne sont pas de moi. On peut en théorie virer le switch car la surface passée en paramètre est, en théorie, obligatoirement en 4Bpp ( soit 32 bpp)...D´ailleurs le nom de variable utilisé bpp porte à confusion, car il décrit le nombre d´octets par pixels, et non de bits par pixels !
Si quelqu´un voudrait que j´explique plus en détail les fonctions je veux bien, c´est surtout des calculs bit à bit mais assez simples ( décalage s par octet, et cast)
impec ![]()
un seul reproche ( sans grande importance)
tu mets les valeurs de la colorkey ( 255,255,0 pour toi) en dur dans la fonction LoadTex.
Peut etre devrais tu passes ces parametres dans la fonction pour permettre a l´utilisateur de choisir !
Sinon, c´est tres bien
Pour les formats destructeurs ( comme le JPG), en effet, ça peut poser soucis : notemment quand on compresse une image contenant du texte noir sur fond blanc en jpeg : ça fait tout cracra quand on zoome ![]()
Ah oui zut j´ai oublié de changer ça lol !
J´vais corriger ça, c´est vrai que j´ai copié-collé en oubliant que j´avais défini ma propre ColorKey ^^
( ...)
Au fait il ya un moyen simple de faire qu´une fonction ne puisse être appelée que par une autre fonction ? ( Si faut changer beaucoup de code je le ferais pas, si c´est juste une petite ligne à rajouter je le ferais
)
( ...)
http://rafb.net/paste/results/KiPXCH63.html
Voilà le nouveau Paste ![]()
Au fait il ya un moyen simple de faire qu´une fonction ne puisse être appelée que par une autre fonction >
c´est la philosophie des lib :
tu vas créer un ptivalutil.h
et un ptitvalutil.cpp
dans le . cpp, tu mets tes fonctions.
dans le . h , tu mets les prototypes appelables de l´exterieur, tu n´es pas obligé de mettre les prototypes de toutes les fonctions....
Ensuite, dans ton main, tu fais :
et tu n´as acces qu´aux fonctions prototypées dans le . h
donc ![]()
Ah bah oui
Je suis un peu bêbête des fois ![]()
apres, tu as également les classes qui te permettent des sécurités, mais la c´est du pur C++
je ne sais pas si tu maitrises les classes ?
Je connais, je sais un peu, mais je n´irais dire que je maîtrise les classes que quand je pourrais lire le cours de Christian Casteyde sans m´arracher les cheveux
Enfin bon avec les classes j´imagine que c´est un truc genre avec protected/private...
Mais bon sur ce coup là j´en ai pas besoin ça ira ; )
Sinon, est-ce que tu pourrais m´expliquer ce qu´il se passe quand on " locke" une surface ?
En fait, pour comprendre l´interet du lock, il faut voir comment ça marche :
- d´un coté tu as le CPU, qui agit sur la RAM, spécialiste de la manipulation des octets 1 par 1.
- de l´autre, tu as le GPU ( dans la carte graphique), qui agit sur la VRAM, spécialiste du transfert de données ( du blit rapide)
un GPU de geForce5 est sur une architecture 256 bits : c´est a dire capable de copier 32 octets = 8 pixels 32 bits en un seul cycle.
Cependant, le GPU NE SAIT PAS manipuler les pixels 1 par 1.
Si tu as une image en VRAM, et que tu désires changer 1 pixel : ça coince. Le GPU ne sait pas faire.
Il faut donc copier l´image en RAM, pour récupérer un pointeur dessus ( donc y accéder avec le CPU)
Cette copie s´appelle le " Lock". Ensuite, en RAM, tu modifies le ou les pixels...
Puis tu la remontes ( Unlock) en VRAM a l´endroit ou elle était.
C´est pour cela que Lock et Unlock sont des fonctions lentes ( car copie entiere de la surface)
Et le piege connu, a éviter, si tu dois traiter tous les pixels d´une surface, c´est de ne pas faire de lock et unlock entre chaque pixels...
Evidemment, éviter un max ce genre de fonctions dans la boucle principale...
Note : Si toutes tes images sont en RAM par défaut, alors evidemment, Lock et Unlock ne font rien.
http://rafb.net/paste/results/DgF2Bn70.html
Voilà la version peut-être finale, avec quelques améliorations ( je ne modifie pas les pixels qui n´ont pas besoin de l´être, et en bas de page il ya un p´tit tuto)
Donc si vous voulez en savoir plus sur la gestion des Uint32 et des Uint8, allez en bas de page, un p´tit tuto sur l´utilisation des opérateurs de décalage bit-à-bit et du OU BINAIRE ; )
( PS : Si vous cherchez un exo sur le ET BINAIRE, faites une fonction qui met l´Alpha à 0 de tous les pixels, quel que soit leur Alpha de départ...En utilisant un ET BINAIRE
Et en sachant que :
0&0 = 0
1&0 = 0
0&1 = 0
1&1 = 1
Voilà
)
Ah bah j´vais encore faire une modif alors, et hop, on enlève le Lock et Unlock
Je ne rewalle pas, ptêtre que j´vais faire une p´tite page perso avec ce genre d´infos utiles
( J´ai déjà des idées...
)
ça peut etre sympa ![]()
Salut tout le monde voila
je suis sur dev C++ et je tape
using namespace std;
{
int age,poid; / /2 int déclarés
cout < < " votre age ? " < < endl;
cin > > age;
cout < < " votre poid ? " < <endl;
cin<< poid;
cout < < " vous avez " < < age < < " ans et vous peser"<< poid < < " kilo" < < endl;
system("PAUSE");
return 0;
}
ensuite je compile je met run et il ne me demande ke mon poid et pas mon âge kelkun voit ou ets la phautes svp
merci davance