如果我只是翻轉單個曲面(我從SDL_SetVideoMode
返回的曲面),我一直試圖翻轉曲面並取得了成功。如果我嘗試翻轉表面,我從SDL_DisplayFormat
回來,沒有任何反應。我附上顯示我的問題的演示代碼:SDL:無法翻轉多個表面
#include <stdio.h>
#include <stdlib.h>
#include "SDL/SDL.h"
void main()
{
int i;
SDL_Surface *mysurface1;
SDL_Surface *mysurface2;
char *pxl;
SDL_Init(SDL_INIT_EVERYTHING);
mysurface1 = SDL_SetVideoMode(640, 480, 8, SDL_DOUBLEBUF|SDL_HWSURFACE);
for (i = 0; i < 20; i++)
{
pxl = (char *)mysurface1->pixels + i*mysurface1->pitch + i;
*pxl = 100; // Red Line
}
SDL_Flip(mysurface1); // Works, we see a red line
sleep(5);
printf("Sleeping for 5...\n");
mysurface2 = SDL_DisplayFormat(mysurface1);
for (i = 0; i < 20; i++)
{
pxl = (char *)mysurface2->pixels + i*mysurface2->pitch + i;
*pxl = 255; // White line
}
SDL_Flip(mysurface2); // White line doesnt appear
printf("Done... No white line\n");
sleep(10);
}
有沒有人見過這個?再次,我想我跟蹤到的表面不會顯示,如果它的表面我從SDL_DisplayFormat
回來。如果我在表面上做到這一點,我從SDL_SetVideoMode
回來,然後我看到紅線,一切正常。