我无法理解这个问题。还没有机会在另一台电脑上尝试这个。
我有一个非常简单的以下代码,用于打开 SDL 窗口并进入循环。它打开了窗口,我可以看到循环做了一些事情,例如,我使用增量值对 SDL_SetWindowtitle() 进行了测试,并看到它不断增长,因此有一些生命。
然而它仍然卡住,没有反应。我无法按关闭按钮或移动窗口。有时它的生命力很弱,它会“更新”,但又会再次变得无响应。
我开始认为我的代码中存在一些我没有注意到的愚蠢错误。
代码编译一切正常,警告或错误为零。
我在 Windows 10 64 位上使用 MinGW 64 位编译器。
#include <SDL2/SDL.h>
int main(int argc, char** argv) {
SDL_Window *window;
SDL_Surface *surface;
SDL_Renderer *renderer;
SDL_Event event;
int WINDOW_WIDTH = 1280;
int WINDOW_HEIGHT = 720;
bool exit = 1;
if (SDL_Init( SDL_INIT_VIDEO ) < 0) {
return 2;
}
window = SDL_CreateWindow("Gui test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN );
if (!window) {
return 3;
}
surface = SDL_GetWindowSurface(window);
if (!surface) {
return 4;
}
exit = false;
while (!exit) {
while(SDL_PollEvent(&event) > 0) {
switch(event.type) {
case SDL_QUIT:
exit = true;
break;
}
SDL_UpdateWindowSurface(window);
SDL_Delay(1000/30);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
更新:这似乎是 Windows 特定的问题。我注意到在工作中启动电脑后,一段时间内一切正常,但过了一会儿,由于某种原因问题又出现了。我家里的 Linux 问题为零。
TLDR:计算机在 Windows 上启动后不久,某些因素会阻止 SDL 正常工作。
UPDATE2:没有任何事件处理,窗口绘制得非常好。使用简单的渲染器和背景颜色更改进行测试。但是,一旦我实现任何事件处理函数(甚至 SDL_PumpEvents(0)),窗口就会冻结,并且需要大约 5-10 秒才能渲染背景。它似乎取决于事件处理。
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |