0
因此,這裏是我的代碼的問題:SDL的blitting正在非常緩慢
我創建了一個顯示屏幕:
displayScreen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE|SDL_DOUBLEBUF);
然後我創建了一個背景:
background = load_image("gliderGameBackground1.png");
// I optimize the image
然後,我有一箇中間表面:
screen = SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCALPHA, 300, 300, 32,
rmask, gmask, bmask, amask);
然後我申請的表面:
apply_surface(0, 0, background, screen);
apply_surface(0, 0, screen, displayScreen);
我之所以有一箇中間的屏幕是我的計劃是要始終如一地做一個1920×1080的表面在遊戲循環再縮它基於什麼用戶希望再顯示該表面。我有一個上網本,所以我注意到幀速下降很快,這顯着下降。我計劃在做標誌的情況下做colorkey和per pixel alpha blitting以及全屏。
那麼我在做什麼錯,這使得這很慢?
爲什麼要自己縮放呢?使用OpenGL表面並自動縮放。 – 2012-03-14 23:17:21
那麼我還沒有擴展它,但我打算使用SDL_gfx zoomSurface() – user1270289 2012-03-14 23:19:44
好吧,首先,你不應該在你的遊戲循環的每次迭代中創建一個新的表面。只有在窗口大小發生變化時才創建一個新窗口。但是,如果您使用OpenGL表面,則可以避免調整SDL RGB表面的大小,並在屏幕更改大小時更改OpenGL投影矩陣。 – 2012-03-14 23:26:07