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。
此时运行项目,就可以得到一个黑色底的窗口了,什么也没有,确实是空的。