汇总页
OpenGL属于较低层的图形渲染相关库,负责向显卡提供绘制画面所需的、从建模顶点到画面处理的数据信息和编程脚本(可编程渲染管线),但与其它底层的图形库不同,OpenGL实际上是一个底层的图形渲染规范标准,由1992年成立的OpenGL架构评审委员会(ARB)维护【百度百科】,因此各显卡和平台的对它的具体实现可以是不同的。
OpenGL是一个庞大且用途多样的图形库,涉及知识点和函数较多,对刚接触图形学的新手而言零基础直接啃《OpenGL超级宝典》(俗称蓝宝书)或《OpenGL编程指南》(又叫红宝书(虽然中文版是墨绿色的封皮=-=))其实是不太适合的。
这边推荐新手先食用相较下会简单点的learnopengl提供的入门教程【中文翻译的教程网址】(由于教程是放在gayhub上,所以可能需要魔法上网,或者食用官方英文版教程),或者EA小哥的导向引擎开发的C++和GL系列入门视频【比比汗丽丽上的搬运视频链接】
等到看完上面两者之一后才食用书本是比较明智的选择。
glfw官网下载(官网也有glfw的相关文档)(选择下载源文件(source package))
cmake官网下载(编译glfw源码用)
glad官网下载
freeglut和glew的网址我给忘了(毕竟之后用的glfw没用过glut),以后可能会补上吧
打开cmake之后在第一栏选择之前下好且解压后的glfw源码文件夹,第二栏选好编译目标文件夹
点击左下角的Configure按钮,会出来以下界面
第一栏选择对应的编译器,下面的不用管他,默认的就好,点击Finish
等待出现第二个界面之后不用勾选任何东西(通常情况下),点击Generate开始生成文件,读条结束后在我们一开始选择的第二栏(编译目标文件夹)中就会出现对应编译器版本的glfw库工程的文件了。(如下图所示)
然后我们点击打开上图文件夹中的.sln(解决方案)文件,点击生成>生成解决方案,待生成完毕,在项目文件夹的srcDebug文件夹中可得到我们接下来需要的.lib(库)文件。
我们将一开始解压后拿去给cmake编译的GLFW-x.x.x文件夹中的include目录下的GLFW文件夹复制到新建的include中,下载好的glad所解压得到的文件夹中include目录下的两个文件夹glad和KHR复制,粘贴到这个新的include文件夹中;
将编译好的GLFW库(之前提到的debug和release文件夹)复制到lib文件夹下(由于我们刚刚只用debug模式对glfw进行了编译所以只有deubug文件夹,如果换作release再进行一次编译之前glfw项目的src文件夹下就会有debug和release两个文件夹了)。
在vs2019中新建c/c++的空项目,点击项目—>属性
然后在vc++这栏找到包含目录(include)
选择自己刚刚整理好的include文件夹(注:$(SolutionDir)是vs的特殊指令,指代项目目录,可用于不同电脑上的项目转移避免项目因为绝对地址问题打开失败)
然后选择库目录(lib)栏,选择自己刚刚整理好的lib文件夹(不同的配置(见下图左上角)(debug、release)选择对应的文件夹)
然后,点击链接器,选择输入标签,在附加依赖项中加入opengl32.lib;glfw3.lib;两项,Debug和Release模式下名字是一样的,因此和include一样,可以在左上角为所有配置选项下配置。
配置完成,点击应用以保存设置。
最后,将之前放在include中的glad.c文件包含在项目中(如果vs界面里的项目文件夹中出现了,就右键点击选择包含在项目中,如果没有,右键空白处选择添加现有项,选择glad.c)。
这样我们的项目设置就完成了。
第五步 测试环境是否配置成功项目中新建cpp文件;
在文件中输入以下代码:
// OpenGL基本库 #include <glad/glad.h> #include <GLFW/glfw3.h> // 报告错误用 #include <iostream> // 窗口回调函数,每当窗口大小属性被修改时该函数被回调,参数即为该窗口新的大小 void framebuffer_size_callback(GLFWwindow* window, int width, int height) { // 未来会添加内容 } // 事件检测函数 void process_Input(GLFWwindow* window) { // 未来会添加内容 if (glfwGetKey(window,GLFW_KEY_ESCAPE) == GLFW_PRESS) // 按键检测,检测esc键是否按下 { glfwSetWindowShouldClose(window,true); // 设置对应窗口应该被关闭 } } int main() { // !初始化glfw窗口 glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // 指定OnencL的主版本号(和glad版本对应) glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // 指定OpenGL的子版本号(和glad版本对应) glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 设置使用OpenCL的核心模式(可编程渲染管道的模式) //创建窗口 GLFWwindow* window = glfwCreateWindow(720, 720, "LearnOpenGL", NULL, NULL); // 参数含义:窗口宽,窗口高,窗口名称,窗口附加,窗口依赖,如果新建窗口失败返回NULL指针 if (window == NULL) // 如果出错,则退出程序 { std::cout << "Failed to create GLFW window" << std::endl; // 报错信息 glfwTerminate(); // 终止窗口进程 return -1; } glfwMakeContextCurrent(window); // 将窗口的上下文环境设置为当前主线程的上下文环境 // !初始化glad if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) // 如果加载失败,退出程序 { std::cout << "Failed to initialize GLAD" << std::endl; // 报错信息 return -1; } // 注册窗口回调函数 glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); glClearColor(1.0f, 1.0f, 0.0f, 1.0f); // 设置清屏颜色为黄色 // 渲染循环 while (!glfwWindowShouldClose(window)) // 检测窗口是否该关闭 { process_Input(window); // 处理输入事件 glClear(GL_COLOR_BUFFER_BIT); // 清屏 glfwSwapBuffers(window); // 将显示缓存和离屏缓存交换(显示离屏缓存中的内容) glfwPollEvents(); // 检查是否有事件触发(例如鼠标输入和键盘输入事件) } glfwTerminate(); // 终止进程 return 0; }
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162如果环境配置成功则上述代码能成功运行,就会打开一个赛博朋克2077标配(大误) 黄色的图形界面窗口
(此时按下esc键就会被检测到并退出程序)
恭喜你现在成功进入了OpenGL无限可能的世界
有的人可能觉得每次新建OpenGL项目都得配置项目环境很麻烦,想要通过给系统配置环境变量来一步到位,在这篇文章里我就不赘述这些方法了,可以移步百度(bushi
(PS:我个人推荐把include和lib扔到每一个项目里通过“”调用,这样保证换不同电脑上时能快速运行,不需要再次配置环境或者环境(比如GLFW或者GLAD的版本)不一样导致项目打不开
下一篇: OpenGL/C++ 学习笔记(二)图形渲染相关概念
相关知识
动手学深度学习笔记(一)
c++学习
基于机器学习的鸢尾花数据集的三分类算法的实现 C++
机器学习笔记(通俗易懂)
APG IV系统学习笔记分享(一)
“物联网开发实战”学习笔记
HTML学习笔记(一)
关于举办浙江大学第六届最美学习笔记大赛的通知
花道学习笔记
园艺技巧学习笔记1
网址: C++ 学习笔记(一) 搭设环境 https://m.huajiangbk.com/newsview768285.html
上一篇: 蔷薇花的养护技巧!和我一样开出漂 |
下一篇: 家里养花什么是散光处 |