SDL2+Modern OpenGL(glad)

SDL(Simple DirectMedia Layer) 是个简单易用的跨平台多媒体开发库,我希望可以借助这个库来进行创建窗口处理事件等工作,同时结合OpenGL来渲染画面。经过摸索,将设置方案记录于此。
这里使用的是glad.h来调用OpenGL的函数。
需要包含的头文件如下

#include
#include
#include

别忘了将glad.c文件添加到项目里。
在程序开头首先初始化SDL以及声明OpenGL版本。

    if(SDL_Init(SDL_INIT_VIDEO) < 0){
        std::cout << "Failed to initialize SDL2! \n" << SDL_GetError() << std::endl;
        return -1;
    }
    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);

这里使用的OpenGL3.3版本。
接下来创建窗口和一个OpenGL context。

const int SCR_WIDTH = 800;
const int SCR_HEIGHT = 600;
SDL_Window *window = SDL_CreateWindow("SDL2&OpenGL",
                                        SDL_WINDOWPOS_UNDEFINED,
                                        SDL_WINDOWPOS_UNDEFINED,
                                        SCR_WIDTH, SCR_HEIGHT,
                                        SDL_WINDOW_OPENGL|SDL_WINDOW_SHOWN);
                                    
    if(window == nullptr){
        std::cout << "Failed to create window! \n" << SDL_GetError() << std::endl;
        SDL_Quit();
        return -1;
    }
    SDL_GL_CreateContext(window);

注意创建窗口时的flag SDL_WINDOW_OPENGL
初始化glad,并传入函数地址。

    gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress);

之后就可以开始调用opengl函数进行窗口渲染等工作。
渲染循环中,使用SDL_GL_SwapWindow函数将绘制好的图像显示到屏幕上。

SDL_GL_SwapWindow(window);

你可能感兴趣的:(SDL2+Modern OpenGL(glad))