begin process at 2012 05 29 21:42:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Probleme en prog SDL.h


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme en prog SDL.h

mercredi 30 mai 2007 à 19:54:16 | Probleme en prog SDL.h

sieuzac

Salut a tous.
Je voudrez savoir pourquoi mon va plus vite au TEMP 2 qu'au TEMP 1

#include <SDL/SDL.h>
#include <stdio.h>
#include <time.h>
#include <string.h>

/* surface qui sert à l'affichage dans la mémoire vidéo */
SDL_Surface *ecran = NULL;


//On crée une surface dans la mémoire système
SDL_Surface *Virtuel = NULL;

Uint16 color[1024*768];




int main(int argc, char **argv)
{
/* SDL_INIT_VIDEO si besoin de seulement la vidéo */
if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
ecran = SDL_SetVideoMode(1024, 768, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_HWACCEL | SDL_FULLSCREEN);

if (ecran == NULL)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}


int i;
int j;
int k;
int l;
int co1;
int co2;
int co3;


//TEMP 1

for (k = 0; k < 80; k++)
{
    co1 = rand() % 255;
    co2 = rand() % 255;
    co3 = rand() % 255;

    Uint16 rgb = SDL_MapRGB(ecran->format, co1, co2, co3);  
    for (i=0; i<1024 ; i++)
    {
        for (j=0; j<768 ; j++)
        {
            l = j*1024 + i;
            color[l] = rgb;
        }
    }

          
    memcpy((Uint16*)(ecran->pixels),color,1024*768*2);  
    SDL_Flip(ecran);
}





//TEMP 2

for (k = 0; k < 80; k++)
{
    co1 = rand() % 255;
    co2 = rand() % 255;
    co3 = rand() % 255;

    Uint16 rgb = SDL_MapRGB(ecran->format, co1, co2, co3);  
    for (i=0; i<1024*768 ; i++) color[i] = rgb;
 

          
    memcpy((Uint16*)(ecran->pixels),color,1024*768*2);  
    SDL_Flip(ecran);
}


}

@++
mercredi 30 mai 2007 à 20:40:33 | Re : Probleme en prog SDL.h

luhtor

Ton programme devrait meme pas marcher. Je sais pas si t'as conscience du fait que tu alloues une qté de mémoire monstrueuse dans ta pile:

Uint16 color[1024*768];  ce qui représente plus d'1Mo. Donc ton programme devrait crasher directement.

Dans le cas 2, tu fais moisn de calcul, donc ca va plus vite. Logique implacable en info.
Mais je comprends pas pk tu passes par un tableau intermédiaire. Cette version irait encore plus vite:

for (k = 0; k < 80; k++)
{
    co1 = rand() % 255;
    co2 = rand() % 255;
    co3 = rand() % 255;

    Uint16 rgb = SDL_MapRGB(ecran->format, co1, co2, co3);  
    Uint16 * ptr = (Uint16*)(ecran->pixels);

    for (i=0; i<1024*768 ; i++)
        ptr[i] = rgb;
 
    SDL_Flip(ecran);
}

mercredi 30 mai 2007 à 21:14:07 | Re : Probleme en prog SDL.h

sieuzac

Tout simplament par cs que je fais comme si je calcule une image pixel par pixel.
for(x = 0; x < RX; x++) for (y = 0; y< RY, y++) ptr[RX*y+x] = couleur_corespondant[RX*y+x];
mon objectif est de pouvoir fair une comande:
void dot( int x, int y, unsigned int color);

dout

//TEMP 1

for (k = 0; k < 80; k++)
{
    co1 = rand() % 255;
    co2 = rand() % 255;
    co3 = rand() % 255;

    Uint16 rgb = SDL_MapRGB(ecran->format, co1, co2, co3);  
    for (i=0; i<1024 ; i++)
    {
        for (j=0; j<768 ; j++)
        {
            l = j*1024 + i;
            color[l] = rgb;
        }
    }

          
    memcpy((Uint16*)(ecran->pixels),color,1024*768*2);  
    SDL_Flip(ecran);
}

@++


Cette discussion est classée dans : int, ecran, rand, sdl, uint16


Répondre à ce message

Sujets en rapport avec ce message

Arguments et pointeur. [ par moumouteb ] Bonjours. Voici le bout de code qui pose problème:int Jeu (*ecran) {     ecran = SDL_SetVideoMode(Fenetre.x, Fenetre.y, 32, SDL_HWSURFACE | SDL_DOUBLE Problème pour calculer le H pour l'A star ( * ) [ par jedinos ] Bonjour à tous ! [url=http://www.siteduzero.com/tutoriel-3-34333-le-pathfinding-avec-a.html]Dans ce tuto du pathfinding A star[/url] , l'auteur ne no Eviter doublons avec la fonction rand() [ par adeeldu95 ] Salut a tous, j'ai un code qui génère des cartes de jeu (poker), aléatoirement, mais parfois j'ai des cartes en double Pour le premier tirage tout Probleme morpion en SDL c++ [ par juju116 ] Salut tout le monde! j'expose donc mon souci pour l'instant mon programme affiche une image en fond d'ecran et bizarement cette image est bien chargé petit probleme SDL [ par DarthKhaos ] Bonjour, voila j'ai un petit souci, j'ai un projet ou je dois faire bouger un bras robotisé aprés plusieur test sa marche a merveille, en selectionnan SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface problème de boucle pour un affichage SDL [ par sparox1 ] Bonjour à tous, j'ai établis un début de programme de poker pour un projet à rendre dans la fin de cette année scolaire, ce programme tire 5 cartes au Problème pour afficher des images PNG en SDL [ par jedinos ] Bonjour à tous ! Voilà, en suivant attentivement le cour de programmation en C du site du zéro, j'ai pu il y a quelques jours ( enfin ) commencer la Mettre à jour une fenêtre SDL [ par asprog ] Bonjour; je me suis chargée de faire un jeu de casse brique sous C++ en utilisant des classes que je dois les créer(orienté objet) ainsi que la bibl Problème fenêtre SDL sous Linux [ par Neofabiensama ] Bonjour,Je poste aujourd'hui car je suis à cours d'idée sur un problème de fenêtre SDL. Je travaille actuellement sur un projet de visualisation 2D d'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales