1

我正在 Ubuntu 上开发 SDL OpenGL 应用程序,并注意到设置新窗口大小时鼠标范围存在问题。我的应用程序的初始大小是 600x400,鼠标范围 (x,y) 反映了这一点。但是,当用户将屏幕更改为任何其他尺寸(使用给定的预定义尺寸)时,鼠标范围仍然只反映 600x400 的屏幕尺寸,并导致鼠标定位功能出现问题。

为了设置新的分辨率,我调用: SDL_SetVideoMode(Width, Height, 32, SDL_OPENGL);据我了解,它应该处理鼠标范围调整大小,但在 Linux 中似乎没有这样做。谁能给我一个解决这个问题的方法?

注意:可能的 hack 似乎是退出 SDL 并使用重新初始化SDL_Init(SDL_INIT_EVERYTHING);

4

2 回答 2

1

经过一番挖掘,我发现问题是我SDL_GetMouseState(0,0)后来在尺寸更改后调用,这显然干扰了鼠标范围的重新计算。但是,我已经浏览了 SDL 源代码,但我无法确定这将如何影响它。似乎有一些鼠标状态切换可能导致它。

于 2012-08-24T12:07:20.487 回答
0

每当我调整窗口大小时,我都会执行以下操作来刷新我的视口:

m_ParentWindow = SDL_SetVideoMode( m_width, m_height, m_depth, m_SDL_Vid_Flags );

glViewport(0,0,m_width,m_height);

Clear();

清除呼叫的地方:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
于 2012-08-23T15:40:22.877 回答