SDL_Surface* SDL_GetWindowSurface(SDL_Window* window)
window | 調査するウィンドウ |
#include "SDL.h" // SDLヘッダをインクルードする
int main(int argc, char* argv[])
{
SDL_Surface *screen; // SDL2でも同じ. 古いコードを持ってくることができる
SDL_Window *window;
SDL_Surface *image;
SDL_Init(SDL_INIT_VIDEO); // ビデオを初期化する
// 普通にウィンドウを生成する
window = SDL_CreateWindow("SDL2 Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
// しかし, 代わりにレンダラーを生成する. これで画面に直接描画できる
screen = SDL_GetWindowSurface(window);
// ここは古いコードと同じである
image = SDL_LoadBMP("box.bmp"); // loads image
SDL_BlitSurface(image, NULL, screen, NULL); // blit it to the screen
SDL_FreeSurface(image);
// これはSDL_Flipのように働く
SDL_UpdateWindowSurface(window);
// 2秒間表示する
SDL_Delay(2000);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
もし生成されることが必要ならば, 新しいサーフェイスはウィンドウに最適なピクセル形式で生成される. このサーフェイスはウィンドウが破棄されたとき解放される.
このことはウィンドウと3DまたはレンダリングAPIの結びつきと同じではない.
この関数はSDL_HINT_FRAMEBUFFER_ACCELERATIONの影響を受ける.