1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 55
    Points : 24
    Points
    24

    Par défaut Comment projeter une série d'images en OpenGL et C++?

    Bonjour, je développe sous Windows/ Visual C++ et en OpenGL.
    Je cherche à savoir si on peut afficher successivement toute une serie d'images, sous forme de texture, de façon fluide. Comment peut on réaliser cela ou quelles sont les commandes qu'on doit mettre en oeuvre? Merci d'avance.

    Mastero

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 16 452
    Points
    16 452

    Par défaut

    Bien sûr, il te suffit de créer un quad par image, de lui coller la texture correspondant à son image, puis d'afficher le tout avec une matrice de projection ortho. Tu cherches à faire quoi exactement ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 55
    Points : 24
    Points
    24

    Par défaut

    Merci pour ta réponse.
    Je cherche à projeter image par image avec une certaine cadence une série d'une centaine d'images environ sur un support plan, comme un diaporama

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 16 452
    Points
    16 452

    Par défaut

    Ok, donc il suffira de créer un seul gros quad, et de changer sa texture toutes les X secondes.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 55
    Points : 24
    Points
    24

    Par défaut

    Merci ça m'a bien aidé, le chargement des textures a bien fonctionné.
    Au fait où mets-tu la temporisation? En fait, je préfèrerais plutôt mesurer le débit d'images affichées en image/s. Comment pourrait on le faire?

    Merci encore Mastero

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 16 452
    Points
    16 452

    Par défaut

    Je ne suis pas sûr de bien comprendre, tu souhaites mesurer le framerate réel de ton appli (mais a priori tu n'en as pas besoin), ou bien spécifier combien de diapos tu veux afficher par secondes ?

    Dans tous les cas il te faudra des fonctions de timing, style GetTickCount(), timeGetTime(), QueryPerformanceCounter (sous Windows). Choisis plutôt le dernier, c'est le plus précis. Il y a un exemple d'utilisation dans la FAQ C.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 55
    Points : 24
    Points
    24

    Par défaut

    En fait mon appli va faire partie d'un projet qui utilisera du temps réel, et je serais intéressé pour mesurer ce nb d'images par seconde

  8. #8
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2004
    Messages : 521
    Points : 316
    Points
    316

    Par défaut

    cette classe calcule le nombre de frame par seconde avec la winmm.lib, tu peux aussi le faire avec QueryPerformanceCounter si tu veux plus precis

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    /// .h
     
    #pragma comment(lib,"winmm.lib")
    #include <mmsystem.h>
    #include <vector>
     
    using namespace std;
     
    #ifndef FPS_COUNTER_H
    #define FPS_COUNTER_H
     
    class FPS_COUNTER
    {
    public:
    	FPS_COUNTER()	:	fps(0.0f), lastTime(0.0f), frames(0), time(0.0f)
    	{}
    	~FPS_COUNTER()	{}
     
    	void Update(void);
    	float GetFps(void)	{	return fps;	};
    	vector <float> v_fps;
    	float fps_moyen;
    protected:
    	float fps;
    	float lastTime;
    	int frames;
    	float time;
    };
     
    #endif	//FPS_COUNTER_H
     
     
    //// .cpp
     
     
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #include <mmsystem.h>
    #include "FPS_COUNTER.h"
     
    void FPS_COUNTER::Update(void)
    {
    	//keep track of time passed and frame count
    	time=timeGetTime()*0.001f;
    	++frames;
     
    	//If a second has passed
    	if(time-lastTime>1.0f)
    	{
    		fps=frames/(time-lastTime);	//update the number of frames per second
    		lastTime=time;				//set time for the start of the next count
    		frames=0;					//reset fps for this second
    		v_fps.push_back(fps);
    		float total = 0;
    		int i = 0;
    		int v = v_fps.size();
    		for (  i=0;i<v;i++) {
    			total+=v_fps[i];
    		}
    		fps_moyen = total / v;
    	}
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/09/2007, 15h31
  2. comment copier une partie d'image
    Par mouchie82 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/06/2006, 14h43
  3. Comment faire une liste d'image de choix ?
    Par poussinphp dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 00h34
  4. Réponses: 2
    Dernier message: 17/08/2005, 14h40
  5. Compression d'une série d'images jpeg
    Par Tchello dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2003, 19h59

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