OpenGL学习笔记《一》创建一个空的窗口

  最近在这个网站学习opengl的相关知识,通过写博客的方式以加深理解。

  首先需要搭建好环境

  网站推荐的环境是visual studio2015 + glfw3.3 + glad,glfw可以从这个地方下载,下载后的代码,使用cmake生成vs工程文件,编译静态库文件。然后创建空的工程,引入动态链接库。网站里也提到,opengl是一套绘图标准,具体的实现跟显卡厂商提供的驱动有关,而且每个厂商都会有自己的扩展功能,所以假如我们直接使用opengl的各个api,可能需要做各种兼容性判断。所以此时,就引入了glad,帮我们把这些复杂的判断简化,我们可以在这里下载到最新的代码。将glad引入到工程,就可以进行下一步的工作了。

  接下来我们创建窗口

  首先,我们需要初始化opengl的环境:

    glfwInit();
    // config glfw
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);    

  调用glfw的初始化接口,并且声明我们使用的opengl版本,使用的是opengl的core profile。

  初始化之后,我们就可以创建窗口了:

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

    // initialize glad
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        std::cout << "Faild to initialize GLAD" << std::endl;
        return -1;
    }

  glfwCreateWindow方法参数一为窗口的宽度,参数二为窗口的高度,参数三为窗口的名字,后面两个参数暂时可以传空,最后返回GLFWwindow类型的对象,在后面需要用到;

  glfwMakeContextCurrent 将上面创建的GLFWwindow对象设置为当前的上下文,因为opengl是一个状态机,需要依赖这个上下文环境;

  glfwSetFramebufferSizeCallback 设置一个回调,当窗口大小发生变动的时候,需要调整opengl的相关参数,以适应窗口大小变化带来的影响;

  gladLoadGLLoader 则是用来初始化上文提到的glad,管理opengl的各个api。

  此时运行项目,就可以得到一个黑色底的窗口了,什么也没有,确实是空的。

猜你喜欢

转载自www.cnblogs.com/zhong-dev/p/11594015.html
今日推荐