Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - malfrax

Pages: [1] 2 Suivante »
1
Général / Installation SFML sur visual studio 2012 Pro
« le: Juillet 11, 2013, 06:47:08 am »
Bonjour,

Aillant droit via mon ecole a visual studio 2012 Pro je me suis dit autant l'utiliser pour mon projet en SFML.
J'ai donc commence a suivre le tuto pour recompiler la sfml et je tombe sur des erreurs.
J'ai lancer le .bat depuis le prompt de visual studio puis j'ai executer CMake-Gui et j'ai parametrer comme il faut et je recoi c'est erreur :
The C compiler identification is unknown
The CXX compiler identification is unknown
Looking for sys/types.h
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:37 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:2 (PROJECT)


CMake Error: Internal CMake error, TryCompile configure of cmake failed
Looking for sys/types.h - not found
Looking for stdint.h
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:37 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:2 (PROJECT)


CMake Error: Internal CMake error, TryCompile configure of cmake failed
Looking for stdint.h - not found
Looking for stddef.h
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:37 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:2 (PROJECT)


CMake Error: Internal CMake error, TryCompile configure of cmake failed
Looking for stddef.h - not found
Check size of void*
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:37 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:2 (PROJECT)


CMake Error: Internal CMake error, TryCompile configure of cmake failed
Check size of void* - failed
CMake Error at cmake/Config.cmake:13 (message):
  Unsupported architecture
Call Stack (most recent call first):
  CMakeLists.txt:20 (include)


Configuring incomplete, errors occurred!

Je c'est pas comment les reglers ...
Merci d'avance de votre aide.

PS : Desolee pour le manque d'accent je suis en qwerty

2
Général / Optimisation Image
« le: Juin 11, 2013, 12:43:04 am »
Bonjour,

Je compte bientot faire un generateur d'image de synthese et je dois l'avouer j'hesite entre un rendu 100% SFML sois en utilisant l'openGL.
Au niveau rendu pixel par pixel il vaudrait mieu que j'utilise quoi d'apres vous ?
Sinon je vais avoir beaucoup de texture a plaquer sur mes objets. Es que le getPixel est plus optimisé que getPixelPtr et chercher dans le tableau de couleur ou c'est pareil ?
Sinon la est-ce qu'il y a une facon plus simple que de créer une texture avec l'image puis d'afficher un sprite avec cette texture pour rendre l'image pixel par pixel ?

3
Je suis ton conseil et je te recontacterais si j'ai encore des questions ^^

4
En faite j'ai un vector d'objet qui sont susceptible de creer de l'ombre. et j'ai un vector de light qui produise de la lumiere. J'aimerais creer des ombres par rapport au lumiere et au objets. Les lumieres sont en 2D en vue de cote. si on a un carrer avec une lumiere sur le cote on va voir apparaitre un triangle noir sur l'opposer de la lumiere, coller au carrer.

http://www.google.fr/imgres?start=373&um=1&hl=fr&safe=off&tbm=isch&tbnid=aWEY_Y5_gg187M:&imgrefurl=http://stackoverflow.com/questions/5964096/dynamic-2d-shadows-blending-issue&docid=RMbGYnnizj80eM&imgurl=http://i.stack.imgur.com/QDMaB.jpg&w=1280&h=800&ei=Vl1QUdHLHIHKhAeK7oHYBw&zoom=1&iact=hc&vpx=617&vpy=316&dur=1630&hovh=177&hovw=284&tx=178&ty=140&page=8&tbnh=140&tbnw=218&ndsp=50&ved=1t:429,r:77,s:300,i:235&biw=1920&bih=937

Un exemple

5
Du coup je dois faire plusieurs appelle au shader avec des parametres differents ?

6
J'ai reussi a faire un truc qui marche c'est cool :) mais je voudrais savoir si je peut inclure des structures ou des class dans mon shader et le Set via mon main ? Si oui comment ?

7
Graphique / [SFML 2.0] Information sur l'utilisation des shaders
« le: Mars 24, 2013, 11:41:17 am »
Bonjour,
Je me suis un peu renseigner sur l'utilisation des shaders. De ce que j'ai compris c'est que les shaders vont etre une sorte de programme qui va modifier l'image par pixel en utilisant la carte graphique. Mais je ne comprend pas quelque chose, comment je vais pouvoir récupérer les informations de mon jeu via mon main de mon shader. Pour faire des ombres par exemple, il faut que je trouve les informations necessaires comme les lumieres et les objets. Et je ne sais pas comment faire ^^.
Es que se serait possible d'avoir des explications sur comment sa se passe ^^ Je serais pas contre un code d'exemple de shader utilisé avec la SFML ^^
Merci d'avance :)

8
Graphique / [SFML 2.0] Problème avec les sf::Text
« le: Décembre 12, 2012, 02:01:40 pm »
Bonjours,

Je code sur visual studio, pour mon école on dois faire un projet de mathématique basé sur les transformations matriciel. J'ai donc décider de faire une interface graphique avec un repère et tout.
Je voulais donc faire un petit menu avec clique droit sur un point qui me permet de le transformer mais je rencontre une problème avec le sf::Text :

Lorsque j'affiche mon texte des gros carrés plein s'affiche au lieu de mes caractères. J'ai d'abord essayer de voir si ce n'était pas un problème de mémoire avec le font qui est détruit mais non, mettre un pointeur n'a rien changer, j'ai donc décider de faire un font dans le main et lorsque je créer mon objet je passe le font dans le constructeur en référence mais rien n'y fait.



C'est assez génant..
Je vous passe les bouts de codes qui utilise les fonts :

main :
        sf::Font font;
        if (!font.loadFromFile("arial.ttf"))
        {
                cerr << "Impossible de charger le fichier." << endl;
                exit(0);
        }
        sf::RenderWindow win(sf::VideoMode(1024, 768), "Le titre de ma fenetre");
        m3d::ML_Point p1(5, 0), p2(2, 2), p3(1, 1), p4(5, 8);

        sf::CircleShape point(5.0f, 30);
        ML_Menu menu_add(sf::Color(50,50,255), sf::Color(190,190,190), 120, 30);
        menu_add.addBoutton("Add point", test, font);
        menu_add.addBoutton("Quit",test1, font);
        ML_Menu menu_point(sf::Color(50,50,255), sf::Color(190,190,190), 120, 30);
        menu_point.addBoutton("Translate", test, font);
        menu_point.addBoutton("Homotety", test, font);
        menu_point.addBoutton("Rotate", test, font);
        menu_point.addBoutton("Symmetry", test, font);
        menu_point.addBoutton("Delete",test1, font);
 


Menu::addBoutton
void ML_Menu::addBoutton(std::string texte, void(*func)(sf::RenderWindow &win, m3d::ML_Point &pt), sf::Font &font)
{
        boutton.push_back(new ML_Boutton(col_on, col_off, texte, func, font, t_x, t_y));
}

Constructeur ML_Boutton
ML_Boutton::ML_Boutton(sf::Color on, sf::Color off, string texte, void(*func)(sf::RenderWindow &win, m3d::ML_Point &pt), sf::Font &font, int x, int y)
{
       
        color_on = on;
        color_off = off;
        rec = sf::RectangleShape(sf::Vector2f(x, y));
        text_boutton.setString(texte);
        text_boutton.setFont(font);
        text_boutton.setCharacterSize(14);
        is_collision = false;
        is_visible = true;
        m_func = func;
}
 

Merci d'avance pour vos réponse.

9
Projets SFML / Re : [C++] Strategic Wars
« le: Juillet 08, 2012, 01:46:35 pm »
J'ai sortie une version :

http://dl.dropbox.com/u/65137922/V0.5/Strategic Wars 0.51.rar

Pour la destruction du terrain j'y pense mais c'est pas trop pour aujourd'hui :p

Edit : Il y a par ailleur un site web : http://leonadeau0.wix.com/strategicwars

10
J'ai revue mon code est j'ai trouver l'erreur, problème résolu :) J'avais pas convertie le vecteur de la souris qui placer le sprite en vecteur global ><

11
C'était des test car je suis désespéré sur cette erreur, j'utilise SFML 1.6.

12
Sa ne marche pas non plus :/ mais en débuggant je remarque que les sprites sont incomplet donc je pense que sa vient pas de la :/

13
Non il ne s'affiche pas du tout ... :/ l'alpha est à 25 car après je le met à 255 dans une fonction et même à 255 sa ne marche pas :/
Je vous montre le code de toute la class :

General.h
class Batiment
{
    public:
    Batiment(std::string image, int vie, int type);
    void ChargerCaractere(std::string fichier);
    bool IsCollideUnite(sf::Sprite unite);
    bool Placeable(float x, Terrain *terre);
    void Placer(float x, float y, bool placer);
    void Afficher(sf::RenderWindow *app, bool visible);
    sf::Vector2f GetPosition();
    int GetVie();
    int GetType();
    void Degat(float degat);
    sf::Sprite GetSprite();
    void AjouterUnite(Unite* uniter, int id);
    void RemoveUnite(Unite* uniter, int id);

    private:
    std::vector<int> unite_in_place;
    std::vector<sf::Sprite> sprite_unite;
    std::vector<sf::Vector2f> position_unite;
    int m_vie, m_viemax, m_type, m_nombre_unite;
    bool en_creation, m_placer, m_placeable;
    int m_t,curseur;
    std::string fichier_image;
    sf::Vector2f m_position;
    sf::Image image_batiment, image_batimenton, image_batimentoff, m_imagevie;
    sf::Sprite *sprite_batiment;
    sf::Sprite sprite_batimenton, sprite_batimentoff, m_spritevie;
};

General.cpp
Batiment::Batiment(string image, int vie, int type)
{
    m_spritevie = sf::Sprite();
    m_placer = false;
    m_placeable = false;
    m_vie = vie;
    m_t = 0;
    en_creation = true;
    curseur = 0;
    m_viemax = vie;
    m_type = type;
    m_nombre_unite = 0;
    m_position = sf::Vector2f(0,0);
    if(!image_batiment.LoadFromFile(image.c_str()) || !image_batimenton.LoadFromFile(image.c_str()) || !image_batimentoff.LoadFromFile(image.c_str()) || image.c_str() == "")
    {
        cout << "Impossible de charger l'image du batiment.." << endl;
    }
        for(int x(0);x<image_batiment.GetWidth();x++)
            for(int y(0);y<image_batiment.GetHeight();y++)
                if(image_batiment.GetPixel(x,y).a > 0)
                    image_batiment.SetPixel(x,y,Color(image_batiment.GetPixel(x,y).r,image_batiment.GetPixel(x,y).g ,image_batiment.GetPixel(x,y).b,25));

        for(int x(0);x<90;x++)
            for(int y(0);y<image_batimenton.GetHeight();y++)
                if(image_batimenton.GetPixel(x,y).a > 0)
                    image_batimenton.SetPixel(x,y,Color(0,255 ,0,25));

        for(int x(0);x<image_batimentoff.GetWidth();x++)
            for(int y(0);y<image_batimentoff.GetHeight();y++)
                if(image_batimentoff.GetPixel(x,y).a > 0)
                {
                    image_batimentoff.SetPixel(x,y,Color(255,0 ,0,25));
                }

    image_batiment.SetSmooth(false);
    image_batimenton.SetSmooth(false);
    image_batimentoff.SetSmooth(false);
    sprite_batimenton.SetImage(image_batimenton);
    sprite_batiment.SetImage(image_batiment);
    sprite_batimentoff.SetImage(image_batimentoff);7
   
    sprite_batiment.SetCenter(image_batiment.GetWidth()/2,image_batiment.GetHeight());
    sprite_batiment.SetScale(1.2,1.2);
    sprite_batimenton.SetCenter(image_batimenton.GetWidth()/2,image_batimenton.GetHeight());
    sprite_batimentoff.SetCenter(image_batimentoff.GetWidth()/2,image_batimentoff.GetHeight());
    sprite_batimentoff.SetScale(1.2,1.2);
    sprite_batimenton.SetScale(1.2,1.2);

    if(!m_imagevie.LoadFromFile("picture/map/vie.png"))
    {
        cout << "Impossible de charger l'image de la vie du batiment..." << endl;
    }
    else
    {
        m_spritevie.SetImage(m_imagevie);
        m_spritevie.SetScale(2,2);
    }
}
void Batiment::ChargerCaractere(string fichier)
{
    ifstream fiche(fichier.c_str());
    int pos(0), x(0);
    while(!fiche.eof())
    {
        string mot;
        fiche >> mot;
        if(pos == 0)
        {
            m_nombre_unite++;
            x = atoi(mot.c_str());
            pos = 1;
        }
        else
        {
            pos = 0;
            position_unite.push_back(sf::Vector2f(x, atoi(mot.c_str())));
            cout << position_unite[position_unite.size()-1].y << endl;
        }
    }
}
bool Batiment::Placeable(float x, Terrain *terre)
{
    int y1 = terre->cherTerrain(x+image_batiment.GetWidth()/2,-1);
    int y2 = terre->cherTerrain(x-image_batiment.GetWidth()/2,-1);
    if(y1-y2 < 20 && y1-y2>-20)
    {
        m_placeable = true;
        return true;
    }
    else
    {
        m_placeable = false;
        return false;
    }
}
bool Batiment::IsCollideUnite(sf::Sprite unite)
{
    if(CollisionBoiteSensible(unite, *sprite_batiment) != -1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
void Batiment::Placer(float x, float y, bool placer)
{
        m_placer = placer;
        m_position = sf::Vector2f(x, y);
        //m_position = sf::Vector2f(x,terre->cherTerrain(x,-1));
        sprite_batiment->SetPosition(m_position);
        sprite_batimentoff.SetPosition(m_position);
        sprite_batimenton.SetPosition(m_position);
        m_spritevie.SetPosition(m_position+Vector2f(-30,-sprite_batiment->GetSize().x - 40));
}
void Batiment::Afficher(sf::RenderWindow *app, bool visible)
{
    if(en_creation && m_placer)
    {
        int tailleX = image_batiment.GetWidth()-1;
        int collone = 0;
        int random = rand() % tailleX - 1;
        int y(0);
        int test_complete(0);
        for(int i(0); i< image_batiment.GetWidth();i++)
        {
            int x = i;
            y = image_batiment.GetHeight()-curseur-1;
            if(!image_batiment.GetPixel(x,y).a == 0)
                image_batiment.SetPixel(x,y,Color(image_batiment.GetPixel(x,y).r,image_batiment.GetPixel(x,y).g,image_batiment.GetPixel(x,y).b,255));
        }
        curseur++;
        if(curseur >= image_batiment.GetHeight())
        {
            en_creation = false;
        }
        int i(0);/*
        for(i=0;i<tailleX;i++)
        {
            if(image_batiment.GetPixel(i,image_batiment.GetHeight()-curseur+1).a > 200 || image_batiment.GetPixel(i,image_batiment.GetHeight()-curseur+1).a == 0)
            {
                collone++;
            }
        }
        cout << tailleX << endl;
        if(collone >= i)
        {
            curseur+=2;
            cout << curseur << ":" << image_batiment.GetHeight() << ". Colone = " << collone << endl;
            if(curseur == image_batiment.GetHeight())
                en_creation = false;
        }*/

        collone = 0;
    }
    if(visible)
    {
        for(int i(0);i<sprite_unite.size();i++)
        {
            app->Draw(sprite_unite[i]);
        }
        app->Draw(*sprite_batiment);
        app->Draw(m_spritevie);
        if(!m_placer)
        {
            if(m_placeable)
                app->Draw(sprite_batimenton);
            else
                app->Draw(sprite_batimentoff);
        }
    }
}
int Batiment::GetVie()
{
    return m_vie;
}
int Batiment::GetType()
{
    return m_type;
}
sf::Sprite Batiment::GetSprite()
{
    return *sprite_batiment;
}
void Batiment::Degat(float degat)
{
    m_vie -= degat;
    if(m_vie<0)
        m_vie = 0;
    float v = m_vie/m_viemax*30;
    v--;

    m_spritevie.SetImage(m_imagevie);
    m_spritevie.SetSubRect(IntRect(0,0,(int)(v),4));
    m_spritevie.SetScale(2,2);
}
sf::Vector2f Batiment::GetPosition()
{
    return m_position;
}
void Batiment::AjouterUnite(Unite* uniter, int id)
{
    if(position_unite.size()>sprite_unite.size())
    {
        sprite_unite.push_back(sf::Sprite());
        sprite_unite[sprite_unite.size()] = uniter->GetSurface();
        uniter->SetPosition(m_position+sf::Vector2f(position_unite[0].x,-position_unite[0].y));
        uniter->SetInBatiment(true);
        unite_in_place.push_back(id);
    }
}
void Batiment::RemoveUnite(Unite* uniter, int id)
{
    for(int i(0);i<unite_in_place.size();i++)
    {
        if(unite_in_place[i] == id)
        {
            unite_in_place.erase(unite_in_place.begin()+i);
            sprite_unite.erase(sprite_unite.begin()+i);
        }
        uniter->SetInBatiment(false);
        uniter->SetPosition(m_position);
    }
}

14
Non j'ai vérifié il ne s'affiche tout simplement pas... l'affichage ce fait dans une autre fonction ainsi que la position de l'image.  :-\

15
bonjours,
J'ai 3 sprites et 3 image qui ce ressemble beaucoup, une es verte une rouge et une en partie transparante. Le problème c'est que les images ne s'affiche pas ... :/



general.cpp
    m_spritevie = sf::Sprite();
    m_placer = false;
    m_placeable = false;
    m_vie = vie;
    m_t = 0;
    en_creation = true;
    curseur = 0;
    m_viemax = vie;
    m_type = type;
    m_nombre_unite = 0;
    m_position = sf::Vector2f(0,0);
    if(!image_batiment.LoadFromFile(image.c_str()) || !image_batimenton.LoadFromFile(image.c_str()) || !image_batimentoff.LoadFromFile(image.c_str()) || image.c_str() == "")
    {
        cout << "Impossible de charger l'image du batiment.." << endl;
    }
        for(int x(0);x<image_batiment.GetWidth();x++)
            for(int y(0);y<image_batiment.GetHeight();y++)
                if(image_batiment.GetPixel(x,y).a > 0)
                    image_batiment.SetPixel(x,y,Color(image_batiment.GetPixel(x,y).r,image_batiment.GetPixel(x,y).g ,image_batiment.GetPixel(x,y).b,25));

        for(int x(0);x<90;x++)
            for(int y(0);y<image_batimenton.GetHeight();y++)
                if(image_batimenton.GetPixel(x,y).a > 0)
                    image_batimenton.SetPixel(x,y,Color(0,255 ,0,25));

        for(int x(0);x<image_batimentoff.GetWidth();x++)
            for(int y(0);y<image_batimentoff.GetHeight();y++)
                if(image_batimentoff.GetPixel(x,y).a > 0)
                {
                    image_batimentoff.SetPixel(x,y,Color(255,0 ,0,25));
                }

    image_batiment.SetSmooth(false);
    image_batimenton.SetSmooth(false);
    image_batimentoff.SetSmooth(false);
    sprite_batimenton.SetImage(image_batimenton);
    sprite_batiment.SetImage(image_batiment);
    sprite_batimentoff.SetImage(image_batimentoff);7
   
    sprite_batiment.SetCenter(image_batiment.GetWidth()/2,image_batiment.GetHeight());
    sprite_batiment.SetScale(1.2,1.2);
    sprite_batimenton.SetCenter(image_batimenton.GetWidth()/2,image_batimenton.GetHeight());
    sprite_batimentoff.SetCenter(image_batimentoff.GetWidth()/2,image_batimentoff.GetHeight());
    sprite_batimentoff.SetScale(1.2,1.2);
    sprite_batimenton.SetScale(1.2,1.2);

    if(!m_imagevie.LoadFromFile("picture/map/vie.png"))
    {
        cout << "Impossible de charger l'image de la vie du batiment..." << endl;
    }
    else
    {
        m_spritevie.SetImage(m_imagevie);
        m_spritevie.SetScale(2,2);
    }



class Batiment
{
    public:
    Batiment(std::string image, int vie, int type);
    void ChargerCaractere(std::string fichier);
    bool IsCollideUnite(sf::Sprite unite);
    bool Placeable(float x, Terrain *terre);
    void Placer(float x, float y, bool placer);
    void Afficher(sf::RenderWindow *app, bool visible);
    sf::Vector2f GetPosition();
    int GetVie();
    int GetType();
    void Degat(float degat);
    sf::Sprite GetSprite();
    void AjouterUnite(Unite* uniter, int id);
    void RemoveUnite(Unite* uniter, int id);

    private:
    std::vector<int> unite_in_place;
    std::vector<sf::Sprite> sprite_unite;
    std::vector<sf::Vector2f> position_unite;
    int m_vie, m_viemax, m_type, m_nombre_unite;
    bool en_creation, m_placer, m_placeable;
    int m_t,curseur;
    std::string fichier_image;
    sf::Vector2f m_position;
    sf::Image *image_batiment, *image_batimenton, *image_batimentoff, *m_imagevie;
    sf::Sprite sprite_batiment, sprite_batimenton, sprite_batimentoff, m_spritevie;
};

Et je n'ai aucune idée d'ou pourrait venir le problème. J'ai placer un point rouge après le traitement des sprites et j'ai demmarrer le debuger et il me met dans le watch :

sprite_batiment = <incomplete type>
sprite_batimentoff = <incomplete type>
sprite_batimenton = <incomplete type>
m_spritevie = <incomplete type>


Une idée pour mon problème ? :/ je tien à préciser que l'image ce charge correctement. c'est le sprite qui es incomplet :/

Pages: [1] 2 Suivante »