1

我对 SDL 还很陌生,我只尝试使用 2.0 版。我相信在以前的 SDL 版本(1.2 和 1.3)中创建一个窗口SDL_SetVideoMode用. 那么如何使用 SDL 2.0 创建一个用于渲染 3D OpenGL 3.0+ 的窗口?(当然有可编程的流水线)

SDL_CreatWindow然后我的第一个 gess 就是SDL_GetWindowSurface下面SDL_CreateRenderer的代码:

    SDL_Window*   window   = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
    SDL_Surface*  s        = SDL_GetWindowSurface(window);
    SDL_Renderer* renderer = SDL_CreateRenderer(window,  -1, flags);
    SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);

但是,文档上SDL_GetWindowSurface说它不能用于“3D 或此窗口上的渲染 API”

是否有其他方法可以在 SDL 2.0 中渲染 3D OpenGL 3.0+,或者我应该只使用 SDL 1.2,因为 SDL 2.0 仅处于候选发布状态?

4

1 回答 1

2

SDL_GL_SetAttribute()在创建窗口之前尝试使用:

SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 );
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 2 );
//SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE ); 
SDL_Window* window = SDL_CreateWindow( ... );
SDL_GLContext ctx = SDL_GL_CreateContext( window );
SDL_GL_MakeCurrent( window, ctx );
glewExperimental = true;
glewInit();
...

SDL_Renderer虽然如果您创建核心上下文,我不会使用这些东西。

于 2013-07-11T04:25:27.553 回答