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的时候会报错

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

 3.第一个OpenGL程序

直接上代码了

#include "sb7.h";	//引入库文件
#include <cmath>;

class my_application : public sb7::application
{
public:
	//渲染的方法
	void render(double currentTime) {
		//初始化了一个颜色数组
		//currentTime是应用开始运行以来经过的秒数
		//这里跟随时间动态改变颜色及透明度
		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 };
		//告诉OpenGL清除第一个参数的缓存,而使用第三个参数的值,也就是把原来的颜色改成我们设置的颜色
		glClearBufferfv(GL_COLOR, 0, red);
	}
};

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)

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值