• openGL扩展库配置
  • 雪峰 发表于 2016-11-19 标签:
  • 最近要开始进行可编程管线渲染,而不像之前那样使用固定管线了。为此还专门下了个Clion 2016.3(个人喜欢JetBrain系列软件的风格),准备跟c++大干一场。没想到却在门口就摔了个跟头,因为openGL扩展环境配置坑太深了!!!

    由于Clion使用的是Mingw(gcc)编译环境,于是就去下了个mingw32(4.8.1)作为编译器。由于Clion使用Cmake作为编译配置文件,弄清基本命令又要折腾一下。去网上搜了一下,目前openGL扩展库搭配主要是freeglut(glut)+glew。于是我就把这些给下载了,然后各种dll和lib文件全部归好类,还有include的h头文件也放在一起,然后全部引入到项目中的Cmakelist文件中后,去网上找了简单的范例测试一下,没想到各种bug就出来了,连最简单的顶点着色器和片元着色器也没办法编译,主要一使用glew的功能就报错……然后各种百度和google,发现有以下几个坑:

    1.直接的glew for win32使用的是VS环境编译出来的,因此不兼容mingw的编译环境,需要重新下载glew的源文件然后用mingw编译器编译得到.dll和.a文件(静态库和动态库),编译后得到glew32.dll,libglew32.a,libglew32.dll.a放入相应位置即可。(可使用MSYS进行编译,也可使用cmake)

    baidu-ime_2016-11-19_17-9-42

    2.mingw需要libstdc++-6.dll支持,缺失也是不行的。

    然而,就算解决了这些问题程序还是没法运行,无奈我只好用VS2015进行配置,毕竟这些工具库本身就已经提供了VS的编译版本,只需要下载将相应文件放入相应位置引入即可。可是,果然没有我想得那么简单,我把所有库的文件放好后程序依然还是无法正常运行,于是乎我按照知乎上一个相关的回答进行了另一种配置glfw+glew+glmWin 10 + VS 2015 如何搭建 OpenGL 环境?),也就是答案中提到的那个openGL教程网站——http://www.opengl-tutorial.org/所提倡的建议,于是乎我就试了一下,妥妥的,按照教程网上的源码进行编译程序终于可以运行了。而且我发现VS自带的NuGet程序包功能非常不错,只需要在其中输入想要的包基本都会有,下载后会自动配置并导入到当前项目中,十分便利,上面几个包(glfw,glew,glm)都是直接从上面下载的,简直是懒人必备啊

    baidu-ime_2016-11-19_17-26-11

    baidu-ime_2016-11-19_17-30-39

    于是我就照葫芦画瓢也去Clion按照glfw+glm+glew进行配置,好在glfw提供了mingw的编译包,所以直接下载就可以使用了。只好配置好了效果跟VS是一样。但是我不想说话,犯了粗心的错误我在Cmakelist文件中设置的exe输出目录跟着色器文件(glsl)不在同一目录,所以导致程序无法读取文件。然而我还以为是配置的问题,浪费了一些时间,所以粗心很可怕啊。(这么想想,是不是昨天配置freeglut出错也是这个原因呢?

    配个openGL的扩展工具库环境还真是不容易啊,赶紧记录一下,别以后又忘了。

     


     

    2016-12-5

    SOIL:全称为Simple OpenGL Image Library,是一个用于openGL读取图片作为纹理的工具库,需要下载源码自行编译才能使用。前几天试着用mingw32和MSYS对其projects目录下makefile进行编译得到几个*.o文件和soillib.a,把它们放到相应文件夹后进行测试发现总是报错,大概意思就是无法链接到soil库上。我以为是编译文件时出错了,然后google了一下试了所有方法都是一样的结果,因此耽搁了几天,今天无意中在stackoverflow上发现了一个问题,里面看到了lib库文件的引用顺序是soil在opengl的前面,而我设置的顺序则是opengl在soil之前,于是乎我就去改了一下顺序。果然!!!程序运行不报错了。因此谨记:在链接lib库文件时soil要放在opengl之前!!!

    发表回复