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;
}
浙公网安备 33010602011771号