2011-01-31 59 views
2

如果我在一個類中聲明一個SDL_Surface指針,我可以與另一個類共享它以便以某種方式繪製它嗎?SDL_Surface指針在兩個類之間傳遞

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; 
} 

編譯並運行,但屏幕是黑色的,任何人都可以幫忙嗎?

回答

4

屏幕顯示爲黑色可能是因爲您正在使用雙緩衝並且從不翻轉緩衝區(在b.draw之後調用SDL_Flip(a.getSurf()))。