1. glfw用途:
1. 窗口管理:GLFW 可以创建窗口,处理窗口大小和位置的改变,以及其他与窗口相关的事件。
2. 输入处理:GLFW 可以处理键盘、鼠标和游戏手柄的输入
3. opengl上下文: 在不同的操作系统上创建和初始化 OpenGL 上下文之后,可以主要使用 OpenGL 的接口进行图形编程
2. 编写流程:
准备工作
1. GLFW初始化
2. GLFW创建窗口
3. 着色器程序(着色器(Shader)是运行在GPU上的小程序,(GLSL,着色器是使用一种叫GLSL的类C语言写成的):顶点与片段着色器创建编译与程序连接
4. 创建顶点数据与VB0 VAO;
5. 绑定VAO
6. 绑定并填充VBO到GL_ARRAY_BUFFER
7. 设置并启用顶点属性:定义了如何从 VBO(当前绑定到 GL_ARRAY_BUFFER 目标的缓冲)中读取顶点数据
8. VBO 解绑
9. VAO 解绑
绘制工作:
1. 响应外部输入
2. 背景清理
3. 调用程序
4.绑定VAO
5. glDrawArrays 图元绘制
6. glfw双缓冲交换
7. glfw检查并调用事件处理,查询IO事件
下面代码转载自opengl 你好三角形教程
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
const char *fragmentShaderSource = "#version 330 core\n"