SDL2 + OpenGL崩溃了吗?

时间:2015-02-28 17:54:11

标签: c++ opengl sdl

我按照教程使用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。

编辑2

主要问题是SDL默认为GDI Generic(即使我的显卡更新为3.1)

0 个答案:

没有答案