Если я попытаюсь использовать SDL_ShowCursor (SDL_FALSE), то приложение будет сильно зависать в полноэкранном режиме, но не в оконном режиме.Однако, если курсор отображается в полноэкранном режиме, он не будет отставать.Игра запаздывает только тогда, когда я что-то делаю с курсором, пока он скрыт.Как я могу остановить отставание?Кстати, я использую SDL с OpenGL.Это мой код.
Инициализирован
void init(int fullscreen)
{
SDL_Init(SDL_INIT_EVERYTHING);
if (fullscreen == 0)
{
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL|SDL_RESIZABLE|SDL_FULLSCREEN);
}
else if (fullscreen == 1)
{
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL|SDL_RESIZABLE);
}
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
SDL_ShowCursor(SDL_DISABLE);
glClearColor(value2/100,value2/100,value2/100,1.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.0,1.0/1.0,1.0, 5000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_FOG);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogfv(GL_FOG_COLOR, fogColor);
glFogf(GL_FOG_DENSITY, fogDensity);
glHint(GL_FOG_HINT, GL_NICEST);
glFogf(GL_FOG_START, 0.0f);
glFogf(GL_FOG_END, 500.0f);
};
Реализован
void player_action()
{
if (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_MOUSEMOTION:
{
player.rotxl = (screen->w)/2;
player.rotxd = event.motion.x - player.rotxl;
player.rotx = player.rotx + (player.rotxd/4);
if (player.rotx < 0)
{
player.rotx = player.rotx + 360;
};
if (player.rotx > 360)
{
player.rotx = player.rotx - 360;
}
};
break;