如果我只是翻转单个曲面(我从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
回来,然后我看到红线,一切正常。