首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复SDL_CreateWindow错误“窗口太大”

如何修复SDL_CreateWindow错误“窗口太大”
EN

Stack Overflow用户
提问于 2019-05-24 21:44:09
回答 1查看 265关注 0票数 0

我目前正在为我的游戏引擎创建一个窗口类。当我调用SDL_CreateWindow时,它返回错误“窗口太大”。如何解决此问题?为了给我的游戏引擎显示一个窗口。

我已经尝试将窗口创建标志设置为SDL_WINDOW_ALLOW_HIGHDPI,但仍然报告错误。我还将清单工具中的DPI感知设置为高DPI感知。我仍然不能解决这个问题。下面包括初始化窗口函数的代码片段。

代码语言:javascript
复制
SDL_DisplayMode displayMode;
for (int32_t i = 0; i < SDL_GetNumVideoDisplays(); i++)
{
    int32_t displayModeCount = SDL_GetCurrentDisplayMode(i, &displayMode);
    if (displayModeCount != 0)
    {
        std::printf("Could not get display mode for video display %d: %s", i, SDL_GetError());
    }
    else
    {
        m_width = displayMode.w;
        m_height = displayMode.h;
        std::printf("Display %d current display mode is %dx%dpx", i, displayMode.w, displayMode.h);

        float DPI;
        SDL_GetDisplayDPI(displayModeCount, nullptr, &DPI, nullptr);
        x = static_cast<int32_t>(m_width * DPI / DPI);
        y = static_cast<int32_t>(m_height * DPI / DPI);
    }
}

uint32_t windowFlags = SDL_WINDOW_ALLOW_HIGHDPI;
m_pWindow = SDL_CreateWindow(m_title.c_str(), x, y, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, windowFlags);
if (m_pWindow == nullptr)
{
    std::printf("Could not create window: %s", SDL_GetError());
}

即使设置了SDL_WINDOW_ALLOW_HIGHDPI标志,它仍然打印出错误消息,并且不显示窗口。任何关于这个问题的帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 22:19:26

通过将x和y值传递给SDL_CreateWindow函数而不是SDL_WINDOWPOS_CENTERED,解决了此问题。由keltar解决,请参阅注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56293946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档