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

SDL Discussion :

SDL_surface de l'écran principal


Sujet :

SDL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut SDL_surface de l'écran principal
    Bonjour à tous,

    Je voudrais pouvoir récupérer un pointeur SDL_surface sur l'écran principal de mon moniteur.
    Malheureusement cette ligne me renvoie un screen NULL
    screen = SDL_GetVideoSurface();

    Mon but est de pouvoir récupérer la couleur des pixels de mon écran principal (celui où j'affiche une page web pas un créé avec SDL). Il y a peut-être une manière plus simple que de passer par SDL...
    Merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par newchino
    Bonjour à tous,

    Je voudrais pouvoir récupérer un pointeur SDL_surface sur l'écran principal de mon moniteur.
    Malheureusement cette ligne me renvoie un screen NULL
    screen = SDL_GetVideoSurface();

    Mon but est de pouvoir récupérer la couleur des pixels de mon écran principal (celui où j'affiche une page web pas un créé avec SDL). Il y a peut-être une manière plus simple que de passer par SDL...
    Merci d'avance.
    Est-ce qu'on pourrait voir un code minimal, compilable qui te fait ce problème ?

    Jc

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Voici le code.
    Je pensais qu'en utilisant la fonction SDL_GetVideoSurface(), je récupèrerais un pointeur sur l'écran principal mais ce n'est pas le cas.
    Pour être plus clair, je ne veux pas créer de nouvelles fenêtres, je veux juste récupérer des infos sur l'écran principal.
    Merci d'avance

    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
    64
    65
    66
    67
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
     
    #include "SDL.h"
     
    SDL_Color GetPixel ( SDL_Surface* pSurface , int x , int y ) ;
     
    int main(int argc, char *argv[])
    {
    	Uint32 initflags = SDL_INIT_VIDEO;  /* See documentation for details */
    	SDL_Surface *screen;
    	Uint8  video_bpp = 0;
    	Uint32 videoflags = SDL_SWSURFACE;
    	int    done;
            SDL_Event event;
     
    	/* Initialize the SDL library */
    	if ( SDL_Init(initflags) < 0 ) {
    		fprintf(stderr, "Couldn't initialize SDL: %s\n",
    			SDL_GetError());
    		exit(1);
    	}
     
    	screen = SDL_GetVideoSurface();
    	//ici screen est NULL
     
    	/* Set 640x480 video mode */
    	/*screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
            if (screen == NULL) {
    		fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
                            video_bpp, SDL_GetError());
    		SDL_Quit();
    		exit(2);
    	}*/
     
    	SDL_Color pix_color;
    	done = 0;
    	while ( !done ) {
     
    		/* Check for events */
    		while ( SDL_PollEvent(&event) ) {
    			switch (event.type) {
     
    				case SDL_MOUSEMOTION:
    					break;
    				case SDL_MOUSEBUTTONDOWN:
    					break;
    				case SDL_KEYDOWN:
    					pix_color = GetPixel(screen,1000,800);
    					printf("Color : %d",pix_color);
    				case SDL_QUIT:
    					done = 1;
    					break;
    				default:
    					break;
    			}
    		}
    	}
     
    	/* Clean up the SDL library */
    	SDL_Quit();
    	return(0);
    }

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Je ne crois pas que ce soit possible de faire ça (edit : avec les fonctions de SDL).

    Tu ne peux accéder qu'aux surfaces crées par ton application.

    Dans ton cas, il n'y a que screen.
    Je ne répondrai à aucune question technique en privé

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par newchino
    Voici le code.
    Je pensais qu'en utilisant la fonction SDL_GetVideoSurface(), je récupèrerais un pointeur sur l'écran principal mais ce n'est pas le cas.
    Pour être plus clair, je ne veux pas créer de nouvelles fenêtres, je veux juste récupérer des infos sur l'écran principal.
    Merci d'avance
    Ce n'est pas possible, à mon avis, de le faire directement et de facon portable en SDL. Par contre, c'est forcément possible vu que le principe de capture d'écran est possible.

    Regarde le code source de projets comme Gimp ou l'équivalent Windows et tu trouveras probablement ton bonheur...

    Jc

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Tu peux le faire en OpenGL sous Windows, mais pas de cette manière.
    Par contre je ne sais pas si c'est portable, et cela ressemble plus à un hack qu'autre chose...

  7. #7
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Avec GTK+ ça doit être possible (et donc portable aussi), à vérifier.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    ok merci à tous
    Je vais chercher dans ces solutions

Discussions similaires

  1. Réponses: 22
    Dernier message: 10/07/2014, 11h06
  2. Réponses: 4
    Dernier message: 13/09/2010, 15h18
  3. [AC-2007] Ouvrir un répertoire MAIS sur l'écran principal
    Par tibofo dans le forum VBA Access
    Réponses: 0
    Dernier message: 04/08/2010, 11h00
  4. Réponses: 1
    Dernier message: 07/05/2008, 06h55
  5. Réponses: 17
    Dernier message: 17/10/2002, 20h06

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