windows和ubuntu安装opengl:glfw+glew+glm

参考博客:http://blog.csdn.net/u012552880/article/details/48040885


首先我们要知道三个库glfw,glew,glm. 

glfw是辅助创建openGL窗口的开源库.所以在后面配置工程的时候你会发现我们根本就不需要用到MFC窗口框架的,只需要console工程即可

glew是暴露openGL的通用API的开源库,

glm是openGL开发中常用的数学库,主要是一些矩阵变化. 但是这个库是build-free的,也就是说把hpp文件include进去就可以了,不需要lib和dll库文件。


一、win32

先讲windows,我用的是vs2015,其实感觉不同版本的vs配置起来也没啥差。先分别去官网下载glfw,glew和glm。 glfw和glew都可以下载他们编译好的windows binary包,注意即使你的电脑是64位的,你也要下32位的,因为你的vs是32位的。然后步骤如下:

1,将glew32.dll、glfw3.dll复制到C:\WINDOWS\system32中,

2,将你下载到的glm包中的glm文件夹复制到vs2015安装文件夹下的VC\Include中

    将你下载到的glew包中的GL文件夹复制到vs2015安装文件夹下的VC\Include中

    将glfw包中的GLFW文件夹复制到vs2015安装文件夹下的VC\Include中

3,将glew32.lib, glew32s.lib, glfw3.lib、glfw3dll.lib、opengl32.lib复制到vs201,5安装文件夹下的VC\lib中。注意这个opengl32你可以到网上下载,或者你搜一下你的c盘,如果没有,安装一下windows SDK就有了,然后把它拷到lib目录下。

4,  在vs2015中打开项目属性页,在链接器→输入→附加依赖项(Linker->Input->Additional Dependencies)中添加opengl32.lib;glew32.lib;glew32s.lib;glfw3.lib;glfw3dll.lib;

其实如果你不想拷贝这些文件,直接把所需文件加到依赖库的路径里就可以了(流程见下面彩色部分). 注意写程序时候,include "GL/glew.h" "GLFW/glfw3.h", "glm/glm.hpp" 这样才不会报错。


1. 添加编译所需要(依赖)的 lib 文件

    [解决方案资源管理器]“项目->属性->配置属性->连接器->输入->附加依赖项”(Linker->Input->Additional Dependencies)里填写“winsock.lib”,多个 lib 以空格隔开。(等同于“#pragma comment(lib, "winsock.lib") ”语句)

2. 添加库(Libs)文件目录

    方法 1:[解决方案资源管理器]“项目->属性->配置属性->连接器->常规->附加库目录”
    方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“库文件”目录

3. 添加包含(include)文件目录

    方法 1:[解决方案资源管理器]“项目->属性->配置属性->C/C++->常规->附加包含目录”
    方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录



二,win64

后来,我因为CGAL是64位的,没办法跟32位的opengl一起用,所以就重新安装64的opengl。首先从官网下载了预编译包,http://www.glfw.org/download.html,http://glew.sourceforge.net/,https://github.com/g-truc/glm/tags 。 首先我只知道glfw的是VS2015编译的,glew不确定姑且先试一试。


我首先从window kit中把64位的opengl32.dll拷到vs14.0/vc/bin。然后把glew的bin,lib,include的文件夹拷了出来,放到opengl/glew文件夹下面。注意主要release版本64位的相应文件。然后把glfw的bin,lib,include的文件夹放到opengl/glfw文件夹下面。然后又把glm文件夹直接放到opengl下面。然后把opengl/glew/bin, opengl/glew/bin放到系统变量的路径里。 配置vs工程的时候,将opengl/glew/include,opengl/glfw/include,opengl/glmf加入到additional dependecies。将opengl/glew/bin,opengl/glfw/lib ,opengl/glfw/bin, opengl/glfw/lib放到additional library directory。将opengl32.lib;glfw3.lib;glew32.lib加入到additional dependencies。 然后测试代码如下:


#include "stdafx.h"
#include "GL/glew.h"
#include "GLFW/glfw3.h"
#include "glm.hpp"
#pragma comment(lib, "legacy_stdio_definitions.lib")


int main(void)
{
GLFWwindow* window;


/* Initialize the library */
if (!glfwInit())
return -1;


/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
glfwTerminate();
return 0;
}

但是我遇到了glfw3.lib遇到了很多LNK2019的error,我试了所有的方法都不管用。最后发现是因为我把系统默认链接的lib都删掉了,kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;我把这些库都放进去之后,error就全没了。


三,linux

再讲linux,我因为没有用ide写程序,官网上下了glfw和glew,自个先看官网的instruction分别安装一下,木有任何难度。关键就在于,刚开始写opengl程序,你链接的时候,一堆依赖库真是难搞,你要是用g++或者gcc编译的话,依赖库要写一长串,你要是每次用g++烦,就用cmake编译,写一个cmakelist一劳永逸,下面是我的cmakelist:

project(glfw_test)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_C_FLAGS "-frounding-math")
set(CMAKE_CXX_FLAGS "-frounding-math")
aux_source_directory(. SRCS)
add_executable(glfw_test ${SRCS})
target_link_libraries(glfw_test glfw3 X11 Xrandr Xi Xinerama Xxf86vm Xcursor GL GLEW pthread dl)

依赖库的次序搞错都经常报错,这个次序是我试了很多遍的,应该没有问题了。


我后来又鼓捣了下用在linux用code::block, 步骤如下:

1, setting->compiler->linker setting里把要用的库和依赖库(glfw3 X11 Xrandr Xi Xinerama Xxf86vm Xcursor GL GLEW pthread dl)全都加进去.

2,setting->compiler->search directories->compiler里把user/local/include加进去

3,setting->compiler->search directories->linker里把user/local/lib加进去

然后就可以啦



你可能感兴趣的:(Linux,Computer,Graphics)