zoukankan      html  css  js  c++  java
  • OpenGL学习笔记《一》创建一个空的窗口

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

      首先需要搭建好环境

      网站推荐的环境是visual studio2015 + glfw3.3 + glad,glfw可以从这个地方下载,下载后的代码,使用cmake(版本3.15.3)生成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。

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

  • 相关阅读:
    数据分析三剑客 numpy,oandas,matplotlib(2)
    数据分析三剑客 numpy,oandas,matplotlib
    爬虫 crawlSpider 分布式 增量式 提高效率
    RestTemplate:带 header 的 get 请求
    Java:md5 摘要
    Java:Base64 编码
    Java:将字符串转换为枚举
    RestTemplate:使用 Map 传递参数
    Spring cloud:网关-Zuul路由
    Spring cloud:熔断器-Hystrix Dashboard
  • 原文地址:https://www.cnblogs.com/zhong-dev/p/11594015.html
Copyright © 2011-2022 走看看