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 - LD_FLO

Pages: [1] 2 3 Suivante »
1
Fenêtrage / Re : hasFocus() - Crash
« le: Avril 20, 2015, 01:09:23 pm »
Trouvé !

if (app->fenetre->pollEvent(event))
{
    if (event.type == sf::Event::Closed)
         return true;
}
 

Je gère les évènements clavier avec sf::Keyboard (bien plus souple).

2
Fenêtrage / Re : hasFocus() - Crash
« le: Avril 20, 2015, 11:52:52 am »
Super, ça à l'air de fonctionner. Merci  :)
Tant qu'on y est, il arrive aussi parfois que l'évènement
 
if (event.type == sf::Event::Closed)

soit vrai lorsque je lance mon programme (lors de la 1ère frame disponible, résultant la fermeture du programme).

Mon code:

bool CInput::gerer()
{
        app->fenetre->pollEvent(event);

        if (event.type == sf::Event::Closed) {return true;}

        ...
}

Pour palier à ce problème, j'utilise un booléen statique:

bool CInput::gerer()
{
        app->fenetre->pollEvent(event);

        static bool quit = false;
        if (event.type == sf::Event::Closed) {return quit;}
        quit = true;

        ...
}

Ça marche, mais je trouve ça un peu dégueulasse, une idée encore une fois ?

3
Fenêtrage / Re : hasFocus() - Crash
« le: Avril 20, 2015, 11:11:42 am »
Corps principal du programme:

while (true)
{
        if (app->fenetre->hasFocus())
        {
                if (app->input->gerer()) //Gestion des inputs (renvoie true si fermeture du programme)
                {
                        app->fenetre->close();
                        break;
                }
                app->gerer(); //Gestion du programme
                app->afficher(); //Affichage
        }
}
 

4
Fenêtrage / hasFocus() - Crash
« le: Avril 20, 2015, 12:24:24 am »
Bonsoir, lorsque je change de fenêtre Windows (mozilla, bloc note, etc..), je mets mon application SFML en attente à l'aide de sf::Window::hasFocus.
Lorsque je reviens dessus, il arrive de manière totalement aléatoire que la fenêtre plante ("... ne répond pas"), alors que le programme en lui-même continue de tourner (l'affichage console marche).

Une idée à mon problème ?

5
Graphique / Re : LoadFromMemory d'une bitmap
« le: Avril 12, 2015, 10:50:30 pm »
J'ai ma réponse, mais c'était plutôt laborieux.
J'en profite pour poster mon code.
Deux fonctions: une pour stocker une image dans le presse-papier, l'autre pour charger une image depuis le presse papier.
Compatible en exportation vers GIMP, Paint, et beaucoup d'autres, mais pas Photoshop...
Compatible en importation depuis presque tout le monde, mais avec parfois des problèmes de transparence.

En attente d'amélioration.
#include <windows.h>

int copy_to_clipboard(sf::Image *image)
{
        sf::Uint8* buffer;
        HGLOBAL clipbuffer;
       
        int buflen = image->getSize().x*image->getSize().y*4;
       
        //Header
        BITMAPINFOHEADER header;
        header.biSize = sizeof(BITMAPINFOHEADER);
        header.biWidth = image->getSize().x;
        header.biHeight = -image->getSize().y;
        header.biPlanes = 1;
        header.biBitCount = 32;
        header.biCompression = BI_RGB;
        header.biSizeImage = 0;
        header.biXPelsPerMeter = 2835;
        header.biYPelsPerMeter = 2835;
        header.biClrUsed = 0;
        header.biClrImportant = 0;
       
        if (!OpenClipboard(NULL)) {return 1;}

        EmptyClipboard();
        clipbuffer = GlobalAlloc(GMEM_MOVEABLE, buflen + sizeof(BITMAPINFOHEADER));

        if ((buffer = (sf::Uint8*)GlobalLock(clipbuffer)) == NULL)
        {
                GlobalUnlock(clipbuffer);
                CloseClipboard();
                return 2;
        }

        memcpy(buffer, &header, sizeof(BITMAPINFOHEADER));
        memcpy(buffer + sizeof(BITMAPINFOHEADER), image->getPixelsPtr(), buflen);
       
        GlobalUnlock(clipbuffer);
        SetClipboardData(CF_DIB, clipbuffer);

        CloseClipboard();
        GlobalFree(clipbuffer);
        return 0;
}

sf::Image* get_clipboard()
{
        sf::Uint8* buffer;
        HANDLE hData;

        if (!OpenClipboard(NULL)) {return NULL;}
        if ((hData = GetClipboardData(CF_DIB)) == NULL) {return NULL;}
        if ((buffer = (sf::Uint8*)GlobalLock(hData)) == NULL) {return NULL;}
        GlobalUnlock(hData);
        CloseClipboard();

        int* SIZE_HEADER = (int*)(buffer);
        int* NBR_BIT = (int*)(buffer+14);
        int* width = (int*)(buffer+4);
        int* height = (int*)(buffer+8);

        int buflen = (*width)*std::abs(*height)*(*NBR_BIT/8) + *SIZE_HEADER;
        sf::Uint8* buffer2 = new sf::Uint8[buflen+sizeof(BITMAPFILEHEADER)];

        //Header
        BITMAPFILEHEADER header;
        header.bfType = 0x4D42;
        header.bfSize = 0;
        header.bfReserved1 = 0;
        header.bfReserved2 = 0;
        header.bfOffBits = sizeof(BITMAPFILEHEADER) + *SIZE_HEADER;

        memcpy(buffer2, &header, sizeof(BITMAPFILEHEADER));
        memcpy(buffer2 + sizeof(BITMAPFILEHEADER), buffer, buflen);

        sf::Image* image = new sf::Image();
        image->loadFromMemory(buffer2, buflen+sizeof(BITMAPFILEHEADER));

        return image;
}

6
Graphique / LoadFromMemory d'une bitmap
« le: Avril 12, 2015, 07:38:50 pm »
Bonjour, j'ai implémenté la possibilité de pouvoir utiliser le presse papier dans mon application (pour les images). Pour l'exportation (application vers extérieur) aucun problème, mais pour l'importation je me pose des questions:

Qu'est ce que doit lire la fonction LoadFromMemory exactement ? Est-ce le tableau des pixels de l'image (son contenu), ou bien l'image entière (avec le header) ?

7
Graphique / Re : Problème RenderTexture: OpenGL 4.x
« le: Avril 08, 2015, 10:29:10 am »
Up.

Le problème ne venait pas de ma carte graphique, mais de l'Intel GPU (apparemment buguée).
En configurant mes paramètres graphiques et en n'utilisant que ma GTX, le problème disparaît.

Il y a-t-il un moyen, dans mon code, de sélectionner la carte graphique avec laquelle je veux travailler ?


8
Graphique / Problème RenderTexture: OpenGL 4.x
« le: Avril 05, 2015, 08:45:25 pm »
Bonsoir, j'ai récemment changer de PC, et après avoir importé mon code (qui marchait très bien), je me retrouve face à des erreurs étranges quant à l'utilisation des RenderTexture et Texture.

Par exemple:

Certaines lignes de codes comme sf::RenderTexture::draw() ne marchent que dans certains cas: soit elles ne font rien, soit elles font tout planter.
J'ai passé plusieurs heures à trifouiller un peu n'importe où, et par exemple, le fait de changer une Texture locale (juste avant le retour de fonction, et donc la destruction de celle-ci) à des répercussions plus tard sur mes RenderTexture, alors qu'il n'y a à priori aucun rapport.

J'ai cherché sur le net et il semblerait que cela soit lié à ma version d'OpenGL (4.x), trop récente. Que faire ?

Ma config' précédente:
NVIDIA GeForce 710M, Windows 7

Ma config' actuelle:
NVIDIA GTX 860M, Windows 8

9
Graphique / Re : Appliquer un shader sans draw()
« le: Février 24, 2015, 01:35:53 pm »
Pour le moment ça se déroule plutôt bien. Je ne souhaite pas concurrencer Photoshop de toute façon :P

Ça serait surtout pour dessiner des feuilles de sprites, et en voir l'animation simultanément.

Merci pour tes réponses rapides :D

10
Graphique / Re : Appliquer un shader sans draw()
« le: Février 24, 2015, 01:14:29 pm »
Justement, je développe un espèce de "Gimp" orienté animation (plus un "Paint" pour le moment).
Je dispose donc d'une image: renderTexture + sprite (pour l'affichage), que je modifie en dessinant dessus etc...

Je souhaite utiliser les shaders pour appliquer des filtres ou tout autre transformation à mon image. Il faut donc que je modifie ma texture, et non pas juste faire comme si elle avait été modifiée.

11
Graphique / Re : Appliquer un shader sans draw()
« le: Février 24, 2015, 12:42:12 pm »
Le "double-buffering" est une solution en effet.

Je visualise ma texture via un sprite que je dessine sur ma fenêtre principale. Mais si j'utilise mon shader à ce moment là, je ne modifie pas le contenu de ma texture, seulement la manière dont elle sera perçue, non ?

12
Graphique / Appliquer un shader sans draw()
« le: Février 24, 2015, 11:45:36 am »
Bonjour,

Je voulais savoir s'il était possible d'appliquer un shader sur la totalité d'une renderTexture, uniquement, pour en modifier la luminosité par exemple.

Je veux juste modifier cette renderTexture, pas la dessiner avec la fonction draw().

Est-ce possible ?

Merci d'avance  :)

13
Graphique / Re : RenderTexure: dessiner partiellement
« le: Février 10, 2015, 10:36:51 am »
Arf, on en revient toujours aux shaders. Il serait temps de m'y mettre sérieusement.
Merci  ;D

14
Graphique / RenderTexure: dessiner partiellement
« le: Février 09, 2015, 10:51:26 pm »
Bonsoir, je souhaite dessiner un sprite sur une renderTexture, mais partiellement, en fonction d'une autre texture (constituées de deux couleurs C1 et C2) "cachée" derrière la renderTexture.

Seuls les pixels de mon sprite correspondants (en terme de position) à un pixel de couleur C1 de cette texture doivent être dessinés sur la renderTexture (je peux fournir une image si nécessaire).

J'ai essayé de jouer avec les sf::BlendMode et d'autres sprites mais je n'arrive pas à un tel résultat.

Auriez-vous une solution à mon problème ?

Merci d'avance !  :)

15
Système / Re : Editer/Lire Fichier texte
« le: Janvier 08, 2013, 05:30:29 pm »
Merci, désolé du dérangement ;D

Pages: [1] 2 3 Suivante »