赞
踩
最近,开始复习下openGL的新手教程,这里记录下复习笔记。
GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入,GLFW可以从它官方网站上获取。下载页http://www.glfw.org/download.html
选32位就行,最新版本稳定版本 :glfw-3.3.4,下载源码包之后,将其解压并打开。
我们只需要里面的这些内容:
接下来我们下载CMake,来编译下本地库。
我们需要从下面下载CMaKe:这里http://www.cmake.org/cmake/resources/software.html下载安装CMake,这没有什么好说的。
接下来,打开CMake开始配置,CMake需要一个源代码目录和一个存放编译结果的目标文件目录。源代码目录我们选择GLFW的源代码的根目录,然后我们新建一个 build 文件夹,选中作为目标目录。点击Finish 会自动编译完成:
编译如下:生成的工程文件会在你的build文件夹中。
在build文件夹里可以找到GLFW.sln文件,用Visual Studio 2022 打开。因为CMake已经配置好了项目,所以我们直接点击Build Solution(生成解决方案)按钮,然后编译的库glfw3.lib(注意我们用的是第3版)就会出现在src/Debug文件夹内。
接下来,找到IDE或者编译器的/lib和/include文件夹,添加GLFW的include文件夹里的文件到IDE的/include文件夹里去。用类似的方法,将glfw3.lib添加到/lib文件夹里去。
惯例,先说开发工具:这里用VS2022微软官方最新版本:Visual Studio Preview率先访问 Visual Studio 2019 的未来。 立即获取预览,并使用 Visual Studio 中尚未发布的新功能https://visualstudio.microsoft.com/zh-hans/vs/preview/#download-preview
由于学习用,下载个人开发版(Community)就行:
下载完毕,打开Visual Studio Installer 勾选以下安装项:
下面这项可选:
我们首先进入Project Properties(工程属性,在解决方案窗口里右键项目),然后选择VC++ Directories(VC++ 目录)选项卡(如下图)。在下面的两栏添加目录:
现在VS可以找到所需的所有文件了。最后需要在Linker(链接器)选项卡里的Input(输入)选项卡里添加glfw3.lib这个文件:
opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了。
我们只需将opengl32.lib添加进连接器设置里就行了。
GLFW的安装与配置就到此为止。
GLAD是一个开源库,github地址如下:开源https://github.com/Dav1dde/gladGLAD的配置与大多数的开源库有些许的不同,GLAD使用了一个在线服务:在线服务
http://glad.dav1d.de/在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。
打开GLAD的在线服务,大致如下:
我们需要将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。都选择完之后,点击生成(Generate)按钮来生成库文件。
GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中,并添加glad.c文件到你的工程中。
现在,配置已经完成,我们新建一个m.cpp 文件(main.cpp)
输入以下代码,创建一个opengl窗口:
- #include <glad/glad.h>
- #include <GLFW/glfw3.h>
-
- #include <iostream>
-
- void framebuffer_size_callback(GLFWwindow* window, int width, int height);
- void processInput(GLFWwindow *window);
-
- //设置窗口的宽高
- const unsigned int SCR_WIDTH = 800;
- const unsigned int SCR_HEIGHT = 600;
-
- int main()
- {
- //初始化glfw
- glfwInit();
- glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
- glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
- glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
-
- //创建窗口
- GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
- if (window == NULL)
- {
- std::cout << "Failed to create GLFW window" << std::endl;
- glfwTerminate();
- return -1;
- }
- glfwMakeContextCurrent(window);
- glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
-
-
- if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
- {
- std::cout << "Failed to initialize GLAD" << std::endl;
- return -1;
- }
-
- //渲染
- while (!glfwWindowShouldClose(window))
- {
- //输入
- processInput(window);
-
- //事件
- glfwSwapBuffers(window);
- glfwPollEvents();
- }
-
- //释放
- glfwTerminate();
- return 0;
- }
-
-
- void processInput(GLFWwindow *window)
- {
- if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
- glfwSetWindowShouldClose(window, true);
- }
-
-
- void framebuffer_size_callback(GLFWwindow* window, int width, int height)
- {
- glViewport(0, 0, width, height);
- }
编译运行,会出现以下窗口,本节配置完毕。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。