小编Rei*_*nge的帖子

SDL2 SDL_CreateRenderer 降级 OpenGL 上下文,可以防止吗?

我使用的是 Mac 操作系统 (10.9.3)。我可以根据要求创建一个窗口+上下文,它是 3.3 上下文。但是,一旦我创建了渲染器,SDL 就会告诉我渲染器无效。除此之外,我可以使用渲染器来绘制和复制纹理。但创建渲染器似乎也将 OpenGL 上下文更改为 2.1 配置文件:(

有办法防止这种情况吗?

[编辑]

SDL2 和glew 作为静态库链接。glewExperimental 未设置为 GL_TRUE。

C++源码:

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);

SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);


h_main_window = SDL_CreateWindow(
    title.c_str(), 
    SDL_WINDOWPOS_CENTERED, 
    SDL_WINDOWPOS_CENTERED, 
    width, 
    height, 
    SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN
)

SDL_GL_CreateContext(h_main_window)
glewInit()

std::cout << "gl_renderer:" << glGetString(GL_RENDERER) << std::endl;
std::cout << "gl_context: " << glGetString(GL_VERSION) << std::endl;
std::cout << "gl_shading_lang_version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl;

SDL_CreateRenderer(
    h_main_window,
    -1,
    SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE
)

std::cout << "gl_renderer:" …
Run Code Online (Sandbox Code Playgroud)

c++ opengl opengl-3 sdl-2

5
推荐指数
1
解决办法
2667
查看次数

标签 统计

c++ ×1

opengl ×1

opengl-3 ×1

sdl-2 ×1