• OpenGL环境搭建


    1.题外话

    之前一直想了解OpenGL的相关内容,结果都是看一点扔一点,到现在也就知道OpenGL管线有个啥东西,这次也是下定决心要给它学会!!(要不然就吃土了)

    再就是好久也没写博客了,开这篇博客一个是为了自己巩固,另一个是跟大家交流交流,记录一下学习过程吧。

    整个进度也是跟着《OpenGL超级宝典(第7版)》来的,整个系列会很长,不定时更新吧(尽量一天一更,要不然我怕又扔了),废话不多说了,整起!

    2.环境搭建

    开始学习之前,肯定得需要有openGL相关的库,而且是以C++程序进行的示例,所以后续的代码都是C++的(我C++几乎忘完了,再捡起来!)

    1. 书本上第一个程序并没有说环境搭建,而在第一章还是之前,有提到关于书上示例的源码下载
    2. 首先我们去github上把代码弄下来,源码仓库,下载之后,进行解压缩,这里说明一下,因为我是使用的windows,会以windows环境来说。
    3. 我们还需要下载一个CMake,下载地址,下载后进行安装
    4. 进入到代码源目录,打开HOWTOBUILD.txt,里面详细的说明了环境的搭建,跟着说明文档,一步步的操作
    5. 进入到目录sb7code-master\extern\glfw-3.0.4,然后打开CMake,如下图,按照图示顺序依次点击
    6. 这里要说明一下,点击Configure的时候,会弹出如下面板,因为我用的是vs 2017,默认就是win32的,如果是高于这个版本,默认是64位的,所以这里一定要选择win32的,不然后续会有不知名的问题。第一行就选你对应的vs版本
    7. 打开\glfw-3.0.4\build\GLFW.sln,debug和release都生成一边
    8. 然后把\glfw-3.0.4\build\src\Debug和Release中的glfw3.lib拷贝到根目录下的lib文件夹中,Debug中的glfw3.lib需要改名为glfw3_d.lib,Release中的不需要
    9. 然后回到根目录,再次打开CMake,将目录换到根目录下,再重复5、6的操作
    10. 打开VS新建一个工程,这里选空项目,然后我们进入到工程目录下创建两个文件夹include和lib
    11. 将源码目录下的lib文件夹中的文件复制到创建的lib文件夹中去

    12. 将源码目录下的include文件夹中的文件和\extern\glfw-3.0.4\include中的文件都复制到include下面,如下图

    13. 然后我们在vs中,右键解决方案,选择属性

    14. 进入到属性面板,选择C/C++一栏,将“附加包含目录”添加上include的路径,可以写绝对路径或者相对路径,如果没有这一页签,需要先新建一个cpp文件

    15.  接着在预处理器中,预处理定义加上WIN32;_WINDOWS

    16. 然后选择链接器,附加库目录添加lib的路径

    17. 链接器->输入->附加依赖项,将几个lib文件添加进去

      sb7_d.lib;glfw3_d.lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)
    18. 最后也是最重要的一点,选择系统,将子系统改为窗口,否则在调用DECLARE_MAIN的时候会报错

      1. 错误 LNK2019 :无法解析的外部符号 _main,函数 “int __cdecl invoke_main(void)(?invoke_main@@YAHXZ) 中引用了该符号
      2. 错误 LNK1120 :1 个无法解析的外部命令
    19. 至此环境就撘完了,我们尝试一下书上第一个例子 

     3.第一个OpenGL程序

    直接上代码了

    1. #include "sb7.h"; //引入库文件
    2. #include ;
    3. class my_application : public sb7::application
    4. {
    5. public:
    6. //渲染的方法
    7. void render(double currentTime) {
    8. //初始化了一个颜色数组
    9. //currentTime是应用开始运行以来经过的秒数
    10. //这里跟随时间动态改变颜色及透明度
    11. const GLfloat red[] = { (float)sin(currentTime) * 0.5f + 0.3f, (float)cos(currentTime) * 0.5f + 0.5f, 0.0f, (float)cos(currentTime) * 0.5f + 0.5f };
    12. //告诉OpenGL清除第一个参数的缓存,而使用第三个参数的值,也就是把原来的颜色改成我们设置的颜色
    13. glClearBufferfv(GL_COLOR, 0, red);
    14. }
    15. };
    16. DECLARE_MAIN(my_application);

     4.运行结果

    5.总结

    这个环境搭建挺折腾人的,我弄了两三次才搞定,文档上说明的还是不全,所以我也把过程记录了下来,关于vs的部分,我也没什么经验,也是在网上找的解决方案,这里给下参考

    参考博客:OpenGL超级宝典(第7版)环境配置和相关问题_ht巷子的博客-CSDN博客_opengl超级宝典第七版

     C纠错1:LNK2019: 无法解析的外部符号 _main或_WINMAIN,该符号在函数 int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ)_半梦半醒半浮生912的博客-CSDN博客_"无法解析的外部符号 main,函数 \"int __cdecl invoke_main(void)

     

  • 相关阅读:
    2022年全球市场砷化铟镓引脚模块总体规模、主要生产商、主要地区、产品和应用细分研究报告
    2022宁夏杯C新冠疫情对宁夏旅游业的影响分析及对策研究
    MP3算法及代码例程
    如何防止企业代码被抄袭?源代码加密软件来救援!
    深拷贝与浅拷贝
    Oracle TEMPORARY TABLE 临时表的使用及删除报ORA-14452错误的解决办法
    手把手教你用IDEA搭建SpringBoot并使用部署宝塔服务器
    面向对象的照妖镜——UML类图绘制指南
    redis
    深度解析服务细分赛道公链
  • 原文地址:https://blog.csdn.net/dl15600383645/article/details/127727483