工作涉及到了opengl的boom的demo,看到了learn opengl中有,所以,从头学起,顺便记录下
链接https://learnopengl-cn.readthedocs.io/zh/latest/01%20Getting%20started/03%20Hello%20Window/
上代码
// window.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include "GL/glew.h"
#include "GLFW/glfw3.h"
//按键回调
void key_callback(GLFWwindow* window, int key, int scanCode, int action, int mode);
int main()
{
//初始化GLFW
glfwInit();
//配置GLFW,版本3.3
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
//核心模式
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//不允许用户调整窗口大小
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
//创建一个窗口对象,
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
if (nullptr == window)
{
std::cout << "创建GLFW窗口失败" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
//初始化GLEW
//设为GL_TRUE,在GLEW管理OpenGL的函数指针时更多地使用现代化技术
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK)
{
std::cout << "初始化glew失败!" << std::endl;
return -1;
}
//设定视口
int width = 0;
int height = 0;
glfwGetFramebufferSize(window, &width, &height);
//设置回调
glfwSetKeyCallback(window, key_callback);
//循环
//检查是否要求退出,是则返回,
while (!glfwWindowShouldClose(window))
{
//清除颜色缓冲
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
//检查人机交互事件,然后调用事件回调
glfwPollEvents();
//交换颜色缓冲
glfwSwapBuffers(window);
}
//释放资源
glfwTerminate();
return 0;
}
void key_callback(GLFWwindow * window, int key, int scanCode, int action, int mode)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
{
glfwSetWindowShouldClose(window, GL_TRUE);
}
}
以后直接抄就行了。