2011-01-31 3 views
2

Si je déclare un pointeur SDL_Surface dans une classe, puis-je le partager avec une autre classe pour le dessiner d'une manière ou d'une autre?Pointeur SDL_Surface passant entre deux classes

class foo{ 
    private: 
    SDL_Surface* mainScreen; 
    public: 
    foo() { 
     mainScreen = SDL_SetVideoMode(400,300,32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_OPENGL); 
    } 

    ~foo() { 
     SDL_FreeSurface(mainScreen); 
    } 

    SDL_Surface* getSurf() { 
     return mainScreen; 
    } 

}; 

class fee{ 
    private: 
    SDL_Surface* screen_passed; 
    public: 
    void draw(SDL_Surface* screen) { 
     screen_passed = screen; 

     SDL_Surface* img; 
     SDL_Surface* app; 
     app = IMG_Load("image.png"); 
     img = SDL_DisplayFormatAlpha(app); 
     SDL_FreeSurface(app); 
     SDL_Rect destR; 

     destR.x=0; 
     destR.y=0; 

     SDL_BlitSurface(img, NULL, screen, &destR); 
    } 
}; 

int main(int argc, char* argv[]) { 
    SDL_Init(SDL_INIT_VIDEO); 
    foo a; 
    fee b; 
    b.draw(a.getSurf()); 
    SDL_Flip(a.getSurf()); 
    sleep(5); 
    return 0; 
} 

compile et exécuter, mais l'écran est noir, quelqu'un peut-il aider?

Répondre

4

L'écran est noir probablement parce que vous utilisez un double tampon et ne retournez jamais le tampon (appelez SDL_Flip(a.getSurf()) après b.draw).

Questions connexes