SDL2 在 Fedora 21 中调整大小错误但在 windows 中正常

SDL2 resize buggy in Fedora 21 but fine in windows

我正在构建一个跨平台 C++ OpenGL 游戏,使用 SDL2 作为 window 管理器,我最近发现调整 window 的大小在 linux 中有一些奇怪的问题。其他 windows,例如终端,可以很好地调整大小。可能还值得注意的是,Fedora 在 VMware 虚拟机中。

在 windows 中,调整大小功能正常。

在 Fedora21 中调整大小很奇怪。我能解释的最好的是,在调整 window 的大小时:

我知道它可能在我的代码中,所以我在下面提供了相关代码。如果您需要查看更多,请告诉我。奇怪的是它发生在一个 OS 而不是另一个。我还在 OSX 上进行了编译,所以我也会看看那里发生了什么。

相关事件案例

case SDL_WINDOWEVENT_RESIZED:
    if (event.window.windowID == SDL_GetWindowID(mainWindow))
    {
        SDL_SetWindowSize(mainWindow, event.window.data1, event.window.data2);
        reshape(event.window.data1, event.window.data2);
        postRedisplay(); // Change state to redraw
    }
    break;

还有我的整形代码

void reshape(int w, int h)
{
    g.width = w;
    g.height = h;
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, w, 0, h, 1, -1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

感谢您的帮助。问题是 SDL 正在处理 window 调整大小,但后来我也在手动处理它。我不知道为什么这在 windows 中不是问题,我猜它在 windows 中的处理方式不同。

解决方法:去掉下面一行

SDL_SetWindowSize(window, event.window.data1, event.window.data2);