2

SDLの専門家にとっては簡単な質問です。次の 2 つの一見同等の関数について混乱しており、いつどちらを使用するべきか疑問に思っています。

SDL_Surface * SDL_SetVideoMode (int width, int height, int bpp, Uint32 flags);
SDL_Surface * SDL_CreateRGBSurface (Uint32 flags,
        int width, int height, int depth,
        Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);

上記の2つの基本的な違いは何ですか?

SDL_SetVideoMode の後にSDL_CreateRGBSurfaceを呼び出さなければならないことがここで述べられています。どうしてこんなことに?

4

2 に答える 2

4

それらは完全に異なる機能です。

SDL_SetVideoModeビデオ サーフェス (別名アプリケーション画面) を作成し、ユーザーに表示します。

SDL_CreateRGBSurface空のサーフェスを作成します。

を呼び出した後SDL_SetVideoMode、成功した場合、画面がユーザーに表示され、(関数によって、または を呼び出しSDL_GetVideoSurfaceて) ビデオ サーフェス、スクリーン サーフェスが表示されます。

SDL_CreateRGBSurfaceで遊べる空のサーフェスを作成するだけです。

いくつかの使用例は次のとおりです: アプリケーションが起動し、ビデオを初期化してから、空のサーフェスを作成して何らかの方法で操作し、最後にそれをビデオ サーフェスにブリットすると、操作したサーフェスがユーザーに表示されます (反転することを忘れないでください)。スクリーン表面、SDL_Flip)。

a とは何かを知ることは重要SDL_Surfaceです。あなたは尋ねていないので、私はあなたが知っていると思います。

于 2012-06-28T15:48:37.453 に答える
2

SDL_SetVideoModeウィンドウを作成します。このサーフェスは画面に表示されます。

SDL_CreateRGBSurfaceオフスクリーン画像を作成します。SDL_CreateRGBSurfaceたとえば、ディスクからイメージをロードするときに使用されます。それらを見るには、画面にブリットする必要があります。

于 2012-06-28T14:25:48.163 に答える