我正在使用 SDL 和 OpenGL,我创建了 SDL_Surface 和 SDL_SetVideoMode:
SDL_Init(SDL_INIT_EVERYTHING);
const SDL_VideoInfo * dinfo = SDL_GetVideoInfo();
// Setup the surface of SDL
if(configurer::fullscreened){
data::Wnd_Surface = SDL_SetVideoMode(configurer::window_width,configurer::window_height,dinfo->vfmt->BitsPerPixel,SDL_FULLSCREEN | SDL_OPENGL);
}else{
data::Wnd_Surface = SDL_SetVideoMode(configurer::window_width,configurer::window_height,16,SDL_OPENGL);
}
if(data::Wnd_Surface==0){
return -1;
}
SDL_WM_SetCaption("Test", "Test");
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
// Initialize GLEW
if(glewInit()!=0){
cout << "Failed to start glew";
return -1;
}
我在我的主函数中初始化它,然后我有以下(在主函数上):
while(!data::terminate){
AscMainLoop();
SDL_Delay(80);
}
return 0;
一切都很好。我的 AscMainLoop 函数:
int timerelapse = SDL_GetTicks();
//Check for key events
/* BLA BLA BLA *(
AscUpdateComponents(); // Update matrixes and bla bla bla...
AscRender();// Paint
// Fps Counter Update
/* BLA BLA BLA */
SDL_GL_SwapBuffers();// Swap the buffers of our screen
好的,我遇到了问题,我运行了应用程序,但屏幕没有响应,我认为问题出在 main 上的 while 循环上。窗口打开,但我不能拖动它,调整它的大小,这就像窗口上的等待状态(Windows 7 有趣的“请等待”光标)激活。我已经尝试将主循环放在一个线程中。我不知道发生了什么...
编辑:这就像主函数中的循环引起的冻结状态