LOADING

C++ GLFW 窗口初始化说明

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; 
}