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

OpenGL Discussion :

chargement d un shader depuis un fichier


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 31
    Par défaut chargement d un shader depuis un fichier
    Bonjour !

    je viens d implementer un code source c++ :

    une fonction renvoyant un pointeur sur char, depuis un fichier.
    un fichier lui-meme contenant le code source d un shader, afin de fournir le pointeur en question au code opengl afin de le compiler...

    Merci de critiquer mon travail (en bien ou en mal, no souci)...
    (j apprend de mes erreurs)

    Et si ca peut etre utile a quelqu'un, c est coool !
    merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <iostream>
    #include <fstream>
    #include <string>
     
    char* chargement(std::string nom)
    {
        char* adresse = nullptr;
        int taille;
     
        std::ifstream flux(nom, std::ios::in);
        if(!flux){std::cout << "fichier " << nom << " introuvable !\n";}
     
        flux.seekg(0, std::ios::end);
        taille = flux.tellg();
     
        flux.seekg(0, std::ios::beg);
        for (int i = 0; i<taille; i++)
        {
            flux.read(adresse+i, sizeof(char));
        }
        // ajouter \0
        adresse[taille] = '\0';
        // fermer le fichier
        flux.close();
        // renvoyer adresse
        return adresse;
     
    }

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 31
    Par défaut
    Je suis conscient qu il existe deja beaucoup de fonctions faisant la meme chose...
    juste pour le plaisir...

    merci.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    ton adresse n'est jamais initialisée, et quitte à faire du c++, autant utiliser std::vector.
    Et si tu récupères la taille du fichier, lis-le en un seul appel et non un char à la fois.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 31
    Par défaut
    oups...

    ligne 8 : n est-ce pas une initialisation ?

    std::vector ou meme std::string.... est-ce que ces conteneurs seront composés comme des char* ?

    merci de vos critiques !!

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 31
    Par défaut
    Bien vu !!

    j ai modifié la ligne 8 :

    char* adresse;

    merci : nullptr n est pas une initialisation...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <fstream>
    #include <vector>
     
    std::vector<char> chargement(std::string nom)
    {
        std::ifstream flux(nom);
        if(!flux)
        {
            return {};
        }
     
        flux.seekg(0, std::ios::end);
        const int taille = flux.tellg();
        flux.seekg(0, std::ios::beg);
        std::vector<char> data;
        data.resize(taille + 1);
        flux.read(&data[0], taille * sizeof(char));
        adresse[taille] = '\0';
        flux.close();
        return data;
    }
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. [Débutant] [load] Chargement d'un icdevice depuis un fichier mat
    Par samuela dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/06/2014, 14h47
  2. Chargement d'une BDD depuis un fichier excel
    Par pev15 dans le forum Modélisation
    Réponses: 5
    Dernier message: 24/06/2008, 11h24
  3. Réponses: 3
    Dernier message: 08/02/2008, 16h47

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