我正在Ubuntu上开发SDL OpenGL应用程序,并注意到设置新窗口大小时鼠标范围有问题。我的应用程序的初始大小是600x400,鼠标范围(x,y)反映了这一点。但是,当用户将屏幕更改为任何其他大小(使用给定的预定义大小)时,鼠标范围仍然只反映600x400的屏幕大小,并导致鼠标位置功能出现问题。
要设置新分辨率,我打电话:
SDL_SetVideoMode(Width, Height, 32, SDL_OPENGL);
据我所知,应该处理鼠标范围调整大小,但在Linux中似乎没有这样做。谁能给我一个解决这个问题的方法呢?
注意:可能的hack似乎是退出SDL并使用SDL_Init(SDL_INIT_EVERYTHING);
重新初始化
答案 0 :(得分:1)
经过一番挖掘后,我发现问题是我在更改尺寸之后稍后调用了SDL_GetMouseState(0,0)
这显然是在干扰重新计算鼠标范围。但是,我已经完成了SDL源代码,但我无法确定这将如何影响它。似乎有一些鼠标状态切换可能导致它。
答案 1 :(得分: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();