glfw创建窗口

2021-08-25  本文已影响0人  3c1b8ae8346c

opengl开发时 使用glfw库创建窗口的流程,简单归纳一下

  1. glfw库可以帮助我们创建一个opengl上下文和一个用于显示的窗口
  2. 要使用glfw,先得去网站上下载
  3. 然后将源码编译完成后,在cmake工程中使用target_link_libraries将编译好的库文件引用进来,使用include_directorie将相关头文件引用到工程里
  4. 如果是window,在visiual stuido 里面需要引用opengl32.lib, linux需要链接-GL
  5. GLAD可以帮助我们确定函数地址,我们可以把源码下载下来,放入工程中

最后是具体创建窗口的代码实现
1.先初始化glfw,并且设置相关的参数
2.使用glfwCreateWindow创建窗口
3.将新建的窗口设置为opengl当前的上下文窗口
4.使用glad查找opengl的函数地址, 然后就可以开始使用opengl相关的函数
5.循环将颜色数据绘制到屏幕上

#include <iostream>
#include <glad/glad.h>
#include <GLFW/glfw3.h>

using namespace std;

void framebuffer_size_callback(GLFWwindow* window, int width, int height);

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

int main()
{
    cout << "Hello World!" << endl;

    //glfw初始化
    glfwInit();
    //设置opengl版本
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
//    glfwWindowHint(GLFW_VISIBLE, GL_FALSE);//如果需要离屏渲染,可以隐藏窗口

    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    //调用opengl 函数前需要初始化glad
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }
    glViewport(0, 0, 800, 600);

    //当用户窗口大小调整的时候, opengl的视口也要进行调整
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    while(!glfwWindowShouldClose(window))//检查是否需要退出
    {
        glfwSwapBuffers(window);//检查是否有触发事件
        glfwPollEvents();//把颜色绘制到屏幕上
    }

    glfwTerminate();
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读