GLFW
简介
GLFW是一个开源的多平台库,用于OpenGL,OpenGL ES和 桌面上的 Vulkan 开发。它提供了一个简单的 API 来创建 窗口、上下文和表面,接收输入和事件。
GLFW是用C语言编写的,支持Windows,macOS,X11和Wayland。GLFW在zlib / libpng许可证下获得许可。
glfw下载
GLAD
简介
glad是继GL3W,GLEW之后,当前最新的用来访问OpenGL规范接口的第三方库。基于官方规范的多语言 GL/GLES/EGL/GLX/WGL 加载器生成器。
glad下载
Vs2017搭建glad、glfw环境
1、创建Vs2017的C++空工程: cControlOpengl
2、添加main.cpp文件并点击生成解决方案(这样在工程属性中才会显示C/C++选项)
3、右键项目-属性,如下图加入glfw、glad的头文件。具体头文件放在哪里 自行定义,不过必须使得下图附加包含目录可以找到即可。
4、右键项目-属性,如下两图加入glfw、glad的库文件。
6、将glfw的dll拷贝到exe目录下
7、在编写代码时候,必须将glad头文件放在glfw头文件之前。
8、将glad中的glad.c文件加入项目中
代码测试
#include <iostream>#include "glad/glad.h"
#include "GLFW/glfw3.h"void _GLFWframebuffersizefun(GLFWwindow* window, int width, int height)
{// 在窗口中定义一个像素矩形,最终的图形将映射到个矩形中glViewport(0, 0, width, height);
}void processInput(GLFWwindow *window)
{if (window){// 获取窗口按键是否ESCif (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS){// 设置窗口关闭标志glfwSetWindowShouldClose(window, true);}}window = nullptr;
}int main()
{// 初始化glfw上下文glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // 3.3版本glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 使用OpenGL核心模式// 创建OpenGL窗体GLFWwindow *window = glfwCreateWindow(800, 600, "opengl Core", nullptr, nullptr);if (!window) { std::cout << "glfwCreateWindow fail!\n"; return -1; }// 当前OpenGL上下文绑定窗口glfwMakeContextCurrent(window);// 加载所有OpenGL函数指针if (GL_FALSE == gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){std::cout << "gladLoadGLLoader fail!\n"; return -1;}// 在窗口中定义一个像素矩形,最终的图形将映射到个矩形中glViewport(0, 0, 800, 600);// 窗口大小调整回调glfwSetFramebufferSizeCallback(window, _GLFWframebuffersizefun);// 窗口标志是否是关闭while (!glfwWindowShouldClose(window)){// 输入按键处理processInput(window);// 使用红,绿,蓝以及AFA值来清除颜色缓冲区glClearColor(0.0f, 0.33984f, 0.53125f, 1.0f);// 将从窗口中清除最后一次所绘制的图形/*GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲GL_DEPTH_BUFFER_BIT: 深度缓冲GL_ACCUM_BUFFER_BIT: 累积缓冲GL_STENCIL_BUFFER_BIT: 模板缓冲*/glClear(GL_COLOR_BUFFER_BIT);// 双缓冲技术,使用OpenGL或OpenGL ES进行渲染glfwSwapBuffers(window);// glfw事件循环glfwPollEvents();}// 释放资源,终止GLFW库glfwTerminate();system("pause");return 0;
}
关注
Wx GZH:码农总动员
笔者 - jxd