IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Utilisation des pointeurs pour le d�veloppement des jeux vid�o


Sujet :

C++/CLI

  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2021
    Messages
    20
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2021
    Messages : 20
    Par d�faut Utilisation des pointeurs pour le d�veloppement des jeux vid�o
    Bonjour,

    J"apprends en ce moment le c++, j'aimerais savoir l'utilit� des pointeurs dans le cadre des jeux vid�o. Si j'ai bien compris les pointeurs permettent d'�conomiser de la m�moire, donc les pointeurs permettrais d'optimiser le code pour avoir un rendu plus fluide ? J'ai d�j� appris le C mais je n'ai pas compris la diff�rence entre pointeur brute et intelligent.

    Pouvez-vous m'�clairer ?

    Cordialement

  2. #2
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 267
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 267
    Par d�faut
    Un pointeur ne permet pas d'�conomiser la m�moire, c''est une variable qui contient une adresse m�moire qui est en g�n�ral typ�. C'est m�me le contraire, il occupe la taille d'une adresse m�moire qui correspond � une variable int, char, float, etc. occupant elle m�me sa m�moire. On est quelque fois oblig� d'utiliser des pointeurs ( le plus courant �tant l'utilisation des fonctions de chaines de caract�res). Mal utilis�, ceux-ci provoquant des fuites m�moires (pointeurs plus utilis�s d�sallou�s), des crashs du au fait d'une non affection de valeur d'un pointeur (un pointeur cr��e non mis � null va pointer sur une valeur al�atoire, le contenu des cases m�moires lui ayant �t� allou�es, ou la valeur null le pointeur ne pointant alors sur la case m�moire 0 du processus).

    En c++, les allocations m�moires se font normalement par les constructeurs et les d�sallocations par les destructeurs. Les pointeurs intelligents simulent le fonctionnement des pointeurs en c avec une meilleure gestion m�moire qu'en C.

    Dans le cadre d'un jeu, pour avoir un rendu plus fluide, il faut � mon avis au contraire utiliser au maximum la m�moire pour pr�calculer quand c'est possible, et c'est surtout les algorithmes qui vont compter.

    Je ne suis pas d�veloppeur, mes coll�gues DVP compl�menteront ma r�ponse.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    les pointeurs permettent d'�conomiser de la m�moire, donc les pointeurs permettrais d'optimiser le code pour avoir un rendu plus fluide ? J'ai d�j� appris le C mais je n'ai pas compris la diff�rence entre pointeur brute et intelligent.
    C'est comme dire qu'un marteau permet de construire une navette spatiale.
    C'est pas faux, mais c'est pas tr�s pertinent.

    Je suis d'accord avec le message de @chrtophe.

    Et pour poursuivre l'analogie "la diff�rence entre pointeur brute et intelligent", c'est comme comparer une pierre et un marteau de charpentier.
    On peut faire les m�mes choses avec mais pas avec la m�me simplicit� et s�curit�.

  4. #4
    Membre �m�rite

    Profil pro
    Inscrit en
    D�cembre 2013
    Messages
    403
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2013
    Messages : 403
    Par d�faut
    L'id�e que les pointeurs permettent d'�conomiser de la m�moire vient du fait que l'alternative qui est pr�sent�e est d'avoir des variables "classiques" sur toute la dur�e de vie du programme. Par exemple, si on fait un jeu qui peut avoir des centaines de monstres en m�me temps, on va cr�er un tableau avec 100 monstres et par exemple un boolean quand un monstre n'existe pas. L'allocation dynamique est alors pr�sent�e comme un moyen d'allouer la m�moire que quand un monstre existe, plut�t qu'avoir la m�moire r�serv�e en permanence.

    C'est une approche p�dagogiquement discutable, mais qui est classique.

  5. #5
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2021
    Messages
    20
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2021
    Messages : 20
    Par d�faut
    Citation Envoy� par mintho carmo Voir le message
    L'id�e que les pointeurs permettent d'�conomiser de la m�moire vient du fait que l'alternative qui est pr�sent�e est d'avoir des variables "classiques" sur toute la dur�e de vie du programme. Par exemple, si on fait un jeu qui peut avoir des centaines de monstres en m�me temps, on va cr�er un tableau avec 100 monstres et par exemple un boolean quand un monstre n'existe pas. L'allocation dynamique est alors pr�sent�e comme un moyen d'allouer la m�moire que quand un monstre existe, plut�t qu'avoir la m�moire r�serv�e en permanence.

    C'est une approche p�dagogiquement discutable, mais qui est classique.
    Donc si j'ai bien compris les pointeurs permettent d'allouer/lib�rer la m�moire de mani�re dynamique selon si l'objet en question est pr�sent ou pas. C'est bien �a ? Plus haut, chrtophe dit que les pointeurs occupent plus de place que les variables classique donc leurs utilisations ne serait pas pertinente ? Aussi, je ne vois pas dans quel cas utiliser les pointeurs. J'ai lu plusieurs forum et j'ai l'impression que personne est vraiment capable d'expliquer leurs utilit� dans un cas concret. Dois-je en d�duire que les pointeurs sont utile que tr�s rarement ?

  6. #6
    Membre �m�rite

    Profil pro
    Inscrit en
    D�cembre 2013
    Messages
    403
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2013
    Messages : 403
    Par d�faut
    Les pointeurs occupent plus de place, parce qu'ils occupent la taille du pointeur en lui m�me et la taille de l'objet point�. Alors que si l'objet est cr�� sans pointeur, il n'y a que la taille de l'objet.

    En g�n�ral, c'est pas critique. Mais �a peut le devenir dans certaines situations. Mais tu d�butes en C++, donc tu ne seras pas dans ces situations.

    Comme tu l'as compris, l'utilit� d'un pointeur, c'est d'avoir un objet dynamique, c'est � dire que tu peux cr�er quand tu veux et d�truire quand tu veux. Donc tu l'utilise quand tu es dans cette situation. Ils sont souvent utile quand la situation est adapt�e. Je vois pas comment �tre plus concret qu'en disant que c'est utile dans les situations o� tu veux cr�er et d�truire un objet a n'importe quel moment (remplace "objet" parce que tu veux : monstre dans un jeu, fen�tre dans une application, une ligne ou un caract�re dans du texte, etc)

  7. #7
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2021
    Messages
    20
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2021
    Messages : 20
    Par d�faut
    Citation Envoy� par mintho carmo Voir le message
    Les pointeurs occupent plus de place, parce qu'ils occupent la taille du pointeur en lui m�me et la taille de l'objet point�. Alors que si l'objet est cr�� sans pointeur, il n'y a que la taille de l'objet.

    En g�n�ral, c'est pas critique. Mais �a peut le devenir dans certaines situations. Mais tu d�butes en C++, donc tu ne seras pas dans ces situations.

    Comme tu l'as compris, l'utilit� d'un pointeur, c'est d'avoir un objet dynamique, c'est � dire que tu peux cr�er quand tu veux et d�truire quand tu veux. Donc tu l'utilise quand tu es dans cette situation. Ils sont souvent utile quand la situation est adapt�e. Je vois pas comment �tre plus concret qu'en disant que c'est utile dans les situations o� tu veux cr�er et d�truire un objet a n'importe quel moment (remplace "objet" parce que tu veux : monstre dans un jeu, fen�tre dans une application, une ligne ou un caract�re dans du texte, etc)
    Merci beaucoup !

  8. #8
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2021
    Messages
    20
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2021
    Messages : 20
    Par d�faut
    Merci beaucoup ! Vos r�ponses m'ont grandement aid�;

  9. #9
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 267
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 267
    Par d�faut
    Plus haut, chrtophe dit que les pointeurs occupent plus de place que les variables classique donc leurs utilisations ne serait pas pertinente ?
    �a a �t� r�pondu. Ce n'est pas parce que �a occupe plus de place que ce n'est pas pertinent. exemple : Tu ouvres un fichier, tu lis un caract�re puis tu le fermes, ceci dans une boucle. A ton avis qu'est ce qui est le plus pertinent


    Aussi, je ne vois pas dans quel cas utiliser les pointeurs. J'ai lu plusieurs forum et j'ai l'impression que personne est vraiment capable d'expliquer leurs utilit� dans un cas concret. Dois-je en d�duire que les pointeurs sont utile que tr�s rarement ?
    Voici un exemple :

    En C, il n'y a pas de type chaine. Pour g�n�rer une chaine, on utilise un tableau de char que l'on doit terminer par un caract�re 0 ('\0'). toutes les fonctions de manipulation de chaine attendant ce format et un pointeur sur ce tableau de char en param�tre. Pour utiliser une chaine, tu ne vas pas d�clarer un tableau de char, pourquoi ? car si tu cr�� un tableau de char, il aura une taille fixe, ce qui est en g�n�ral probl�matique pour le traitement de chaines. Tu dois par ailleurs allouer la m�moire pour ce tableau de char avant utilisation (sinon segfault ou pire comportement inattendu) et lib�rer celle-ci quand tu n'en a pas besoin (sinon fuite m�moire). Tu peux tout � fait acc�der au contenu du tableau de char avec l'index des caract�res ex: chaine[1] ou chaine[2] pour respectivement le second et troisi�me caract�re, l'index 0 correspondant au 1er caract�re de la chaine sur lequel pointe le pointeur te permettant d'acc�der � cette chaine. Tu ne peux connaitre la longueur de la chaine qu'en utilisant la fonction strlen qui va parcourir tous les caract�res de la chaine jusqu'� trouver \0 et soustraire l'adresse de ce \0 de l�adresse du pointeur de d�but de chaine. D�o� l'importance de \0.

    Autre probl�matique : si tu utilises la fonction strcpy, elle ne va pas s'assurer que la chaine de destination a la taille suffisante pour lui copier le contenu en param�tre, pourquoi ? car en C le programmeur sait ce qu'il fait (m�me si ce n'est pas le cas, que ce soit par inexp�rience ou oubli, c'est le postulat du C). c'est partiellement contournable avec strncpy qui permet de fournir une valeur maximale � ne pas d�passer lors de la copie, taille que tu dois avoir r�cup�r� pr�alablement avec srlen.

    En C++, tu as un type string, ta chaine est un objet. Tu n'as plus � te pr�occuper de tout �a, tu as juste � la d�clarer et l'utiliser plus simplement sans devoir te pr�occuper si la m�moire n�cessaire est allou�e, c'est le C++ qui g�re. Pour part exemple concat�ner 2 chaines, tu as juste � faire chaine2=chaine1+chaine2;

    Les pointeurs intelligents r�pondent � une probl�matique que je ne maitrise pas mais qui va simuler le comportement des pointeurs du C tout en te d�chargeant de la gestion de la m�moire. Mais �a sera la m�me chose qu'en C, adapt� � une situation pr�cise (situation pr�cise ne veut pas dire situation exceptionnelle).

    Vu que je ne d�veloppe pas, je suis int�ress� pour plus de d�tails sur ces pointeurs intelligents. J'ai des notions de POO (mais que des notions).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Citation Envoy� par chrtophe Voir le message
    Les pointeurs intelligents r�pondent � une probl�matique que je ne maitrise pas mais qui va simuler le comportement des pointeurs du C tout en te d�chargeant de la gestion de la m�moire. Mais �a sera la m�me chose qu'en C, adapt� � une situation pr�cise (situation pr�cise ne veut pas dire situation exceptionnelle).
    Pour les "smart pointers" non cela ne simule pas mais tu encapsules 1 "raw pointer" [dans 1 objet] afin de profiter des constructeurs/ destructeurs pour la cr�ation et la lib�ration.
    Apr�s cela va + loin et on touche �
    • l'appartenance du pointeur. 1 ou plusieurs objets peuvent avoir 1 pointeur sur le m�me objet. Et dans ce cas, l'objet point� ne doit pas �tre lib�r� "trop vite"
    • la dur�e de vie du pointeur. On peut passer 1 pointeur pour modifier 1 objet mais "localement". Ou inversement, on doit faire des tables d'objets/ de correspondance, et on utilise des pointeurs parce que cela va + plus vite � trier (pour d�placer les �l�ments).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. L'utilisation des jeux augmente de 75 % en raison de l'�pid�mie du coronavirus
    Par Bill Fassinou dans le forum D�veloppement 2D, 3D et Jeux
    R�ponses: 2
    Dernier message: 18/03/2020, 16h26
  2. R�ponses: 2
    Dernier message: 28/06/2018, 08h30
  3. R�ponses: 1
    Dernier message: 12/08/2011, 15h25
  4. R�ponses: 3
    Dernier message: 19/09/2009, 16h37
  5. utiliser des conteneurs tri�s stl pour pointeurs, utile?
    Par Pacorabanix dans le forum SL & STL
    R�ponses: 13
    Dernier message: 08/12/2007, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo