GLFW是一个开源、多平台的OpenGL、OpenGL ES和Vulkan桌面开发库。 它提供了一个简单的API来创建窗口、上下文和界面,接收输入和事件。
GLFW是用C语言编写的,支持Windows、macOS、X11和Wayland。
官方地址:www.glfw.org/
把库导入到我们项目。DLL 和 LIB 看自己喜好,我选择LIB,毕竟也不会做什么拓展。
#include "GLFW/glfw3.h"
int main(int argc, char* argv[])
{
// Setup GLFW window
if (!glfwInit())
return 1;
//GLFW窗口中的OpenGL上下文会与Vulkan起冲突,这一段是必要的,如果用户需要在GLFW上使用Vulkan!
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
GLFWwindow *_window = glfwCreateWindow(512, 512, "GLFW_window", NULL, NULL);
if (!_window)
{
glfwTerminate();
return -1;
}
// 检查是否支持Vulkan,可选
if (!glfwVulkanSupported())
{
printf("GLFW: Vulkan Not Supported\n");
return -1;
}
//事件绑定,很简单的, 自己找下定义,看下回调参数自己自定义下就好
//glfwSetErrorCallback(glfw_error_callback);//报错回调
glfwSetWindowSizeCallback(_window, window_size_callback);
glfwSetWindowCloseCallback(_window, window_close_callback);
glfwSetKeyCallback(_window, window_key_callback);
glfwSetMouseButtonCallback(_window, window_mouse_callback);
glfwSetCursorPosCallback(_window, window_cursor_pos_callback);
glfwSetScrollCallback(_window, window_scroll_callback);
#ifdef USE_IMGUI_ENDING_EDITOR //编辑器下开启拖拽模式
glfwSetDropCallback(_window , window_drop_callback);
#endif
//消息循环
while (!glfwWindowShouldClose(_window))
{
//系统事件处理
glfwPollEvents();
//处理系统输入事件
process_input(_window);
//我们的渲染器渲染在此执行
RendererUpdate();
}
return 0;
}