我按照教程使用OpenGL设置SDL 2,但是当我运行应用程序时,它立即关闭。我弄乱了一些值,发现如果我将深度位设置为32,它会工作并保持打开状态。为什么它会支持更高的值而不是更低的值(如16和24)?这是一个问题,因为我希望我的应用程序能够在其他Windows机器上运行,但有些只支持16位深度(我想?)。
if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
return false;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); //Useless?
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
mainWindow = SDL_CreateWindow("OpenGL with SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, resolution.SCREEN_WIDTH, resolution.SCREEN_HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
if (!mainWindow) {
return false;
}
mainContext = SDL_GL_CreateContext(mainWindow);
SDL_GL_SetSwapInterval(1);
我是否可以至少自动将其设置为运行时支持 的内容?
它似乎也适用于25-31。
主要问题是SDL默认为GDI Generic(即使我的显卡更新为3.1)