Указатель SDL_Surface, передаваемый между двумя классами - PullRequest
2 голосов
/ 31 января 2011

Если я объявлю указатель 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;
}

компилируется и запускается, но экран черный, кто-нибудь может помочь?

1 Ответ

4 голосов
/ 31 января 2011

Экран черный, вероятно, потому что вы используете двойную буферизацию и никогда не переворачиваете буфер (звоните SDL_Flip(a.getSurf()) после b.draw).

...