1.首先下载 opengl 的第三方中间件 glad 并部署,官方网址:https://glad.dav1d.de/;
2.下载 SDL2.0 并部署,官方网址:https://www.libsdl.org/download-2.0.php;
3.当前的工程需要链接 glad(或者直接在项目中包含其源码亦可) 和 SDL2.0,glad 会动态加载底层设备厂商的实现,给我们提供较新版本的 opengl 接口;
话不多说,代码如下(采用 VS2015 或者 VS2017 建立工程):
#include <stddef.h> #include <SDL.h> #include "glad/glad.h" #pragma comment(lib, "SDL2.lib") #pragma comment(lib, "SDL2main.lib") #define SCREEN_WIDTH 800 #define SCREEN_HEIGHT 600 int main(int argc, char *argv[]) { SDL_Window *window = NULL; SDL_GLContext context = NULL; SDL_Event event; int ret = -1; if (SDL_Init(SDL_INIT_VIDEO) < 0) { return ret; } 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); window = SDL_CreateWindow("SDL-OpenGL3.3", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); if (!window) { goto end; } context = SDL_GL_CreateContext(window); gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress); glClearColor(1.0f, 1.0f, 0.5f, 1.0f); while (1) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { goto end; }; } glClear(GL_COLOR_BUFFER_BIT); SDL_GL_SwapWindow(window); SDL_Delay(100); } ret = 0; end: if (context) { SDL_GL_DeleteContext(context); } if (window) { SDL_DestroyWindow(window); } SDL_Quit(); return ret; }