begin process at 2012 05 28 17:33:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Blit de surface avec SDL [problème d'affichage]


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

Blit de surface avec SDL [problème d'affichage]

lundi 22 décembre 2003 à 02:33:39 | Blit de surface avec SDL [problème d'affichage]

cyberlewis

Bonjour,


Voilà j'ai fait un code (jeu vidéo SDL),
j'arrive à afficher la partie que je veux (tiles, tiles.bmp) dans screen qui est affichée à l'écran, pas de problème pour ça ...

Mais je souhaites l'afficher dans la surface map :

DrawIMG(tiles, map, 0, 0, 1, 1, tilesWidth, tilesHeight);


Mais ensuite il faut que je blitte une partie de cette surface (c'est à cause d'un scrolling pour jeu 3d iso) vers screen qui sera ensuite affichée :

DrawIMG(screen, map, 0, 0, 0, 0, 640, 480);

SDL_Flip(screen);

Mais la RIEN ne s'affiche ...

Pouvez-vous m'aider à savoir pouquoi svp ???

PS : J'ai aussi essayé avec :

BlitSurface(map, NULL, screen, NULL);

Mais rien n' fait ...


CODE SOURCE :

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>



SDL_Surface *tiles;
SDL_Surface *map;
SDL_Surface *screen;


int tilesWidth = 64;
int tilesHeight = 32;

int quitProgram = 0;
int i, x, y, z = 0;


int Map[10][10] = {
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01,
0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x01};

int InitImages()
{
tiles = SDL_LoadBMP("tiles.bmp");
SDL_SetColorKey(tiles, SDL_SRCCOLORKEY, 0xff00ff);

return 0;
}

void DrawIMG(SDL_Surface *src, SDL_Surface *dest, int x, int y)
{
SDL_Rect rect;
rect.x = x;
rect.y = y;
SDL_BlitSurface(src, NULL, dest, &rect);
}

void DrawIMG(SDL_Surface *src, SDL_Surface *dest, int x, int y, int x2, int y2, int w, int h)
{
SDL_Rect rect;
rect.x = x;
rect.y = y;
SDL_Rect rect2;
rect2.x = x2;
rect2.y = y2;
rect2.w = w;
rect2.h = h;
SDL_BlitSurface(src, &rect2, dest, &rect);
}



void DrawLevel()
{

DrawIMG(tiles, map, 0, 0, 1, 1, tilesWidth, tilesHeight);

SDL_Rect rect;
rect.x = 10;
rect.y = 10;

DrawIMG(screen, map, 0, 0, 0, 0, 640, 480);

SDL_Flip(screen);


}



int main(int argc, char *argv[])
{
Uint8* keys;

if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);

screen=SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( screen == NULL )
{
printf("Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}

InitImages();



while(quitProgram == 0)
{
SDL_Event event;

while ( SDL_PollEvent(&event) )
{
if ( event.type == SDL_QUIT ) { quitProgram = 1; }

if ( event.type == SDL_KEYDOWN )
{
if ( event.key.keysym.sym == SDLK_ESCAPE ) { quitProgram = 1; }
}
}
keys = SDL_GetKeyState(NULL);
// if ( keys[SDLK_UP] ) { ypos -= 1; }
// if ( keys[SDLK_DOWN] ) { ypos += 1; }
// if ( keys[SDLK_LEFT] ) { xpos -= 1; }
// if ( keys[SDLK_RIGHT] ) { xpos += 1; }

DrawLevel();
}

return 0;
}



Merci d'avance ...


http://www.realtuning.online.fr
mercredi 12 mai 2004 à 01:16:47 | Re : Blit de surface avec SDL [problème d'affichage]

gros chichi

Salut

je pense que c'est qu'une invertion source destination

essaye :

DrawIMG(map, screen, 0, 0, 0, 0, 640, 480);
SDL_Flip(screen);

a+


Cette discussion est classée dans : int, rect, sdl, 0x00, 0x01


Répondre à ce message

Sujets en rapport avec ce message

morpion 10 * 10 en C avec SDL [ par nicoworld ] Voilà j'ai ce petit sujet : clair un petit morpion 100 cases donc et interface SDl à oui et 2 joueurs...je m'arrache les cheveux avec mes booléens = Fatal signal: Segmentation Fault (SDL Parachute Deployed) [ par broks ] Je ne comprends vraiment pas pourkoa ca ne marche pas...C'est surement un probleme au niveau de la fonction saisi puisque je plante lorsque je dois sa SDL : linker error [ par bigben89 ] Ca fais à peine quelques mois que j'fais de la programmation (en C) et j'aimerais faire un peu de 2d et de 3d avec SDL. Je regarde des tutoriaux sur probleme de compilation SDL [ par darmoor ] Je suis dsl , le sujet doit etre souvent demandé mais j'ai deja cherché sur google et j'ai pas encore trouvé ce qu'il faut. Bon alors j'ai commencé a classe [ par ToToL ] Bonjour j'ai un eptit souci de classe. tout d'abor voici mon code source :#include #include #include int InitSDL( void );void Analise( void );int Draw [C++] Problème en POO [ par Tijee ] Bonjour à tous.Voila, j'ai fait un petit moteur 2D avec SDL compilé avec Dev-Cpp, il est simple mais fonctionne très bien. J'aimerais parvenir au même SDL_main [ par asmanur ] J'ai un problème avec la SDL avant j'étaient sous GLUT et je suis passé sous la SDL. Donc voila je compile aucune erreur, pas de erreur de link sauf u Problème avec SDL_SetColorKey [ par The_Sin ] Voici mon code : #include SDL_Surface * sEcran ; SDL_Surface * sImage ; void init() {     SDL_Init(SDL_INIT_VIDEO) ;     sEcran = SDL_SetVideoM comment lire une video [ par unionx ] salut tout le monde j'ai un grand probleme -> je ne sais pas comment fais pour lire une sequence video n'import quel format, j'ai deja fais beaucoup SDL : Affichage en multi thread ?! [ par ctx_man ] Bonjour tout le monde, SDL me pose un problème.Je voudrait faire du multi thread afin de séparer ma gestion clavier de mon affichage.voila un exemple


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 2,122 sec (3)

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