(一)链接库配置
注意glad,glfw库的链接问题。
![](https://i-blog.csdnimg.cn/blog_migrate/80d4fb7a27f7847d203c0b8d50453849.png)
(二)代码实现
1.main.cpp
#include"glad/glad.h"
#include"GLFW/glfw3.h"
#include<iostream>
int main(void)
{
GLFWwindow* window;
if (!glfwInit()) return -1;
glfwInitHint(GLFW_VERSION_MAJOR, 3);
glfwInitHint(GLFW_VERSION_MINOR, 3);
glfwInitHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(480, 480, "hello", NULL, NULL);
if (!window)
{
std::cout << "error" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while (glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
2.运行结果-
(三)说明
(1)伪代码
新建窗口 判断:glfw是否初始化
初始化提示(对openGL使用进行说明)
初始化窗口 判断:是否生成了窗口
渲染循环 主要完成 清除当前缓冲,渲染绘制,交换前后缓冲区,处理回调事件
(2)没有clear?
一般清除和解绑对于引擎来说是低效且没必要的。【1】OPENGL的逻辑是选择缓冲区和着色器进行渲染,所以思考的主要的是:完成一件事,需要如何分工给对象任务。而不是对象本身。【2】一个缓冲区被第二次绑定 就相当于 被重新选择 4->7 而没有必要 4->0->7
但这只是相对而言,有些情境下clear和解绑操作就必须处理。