已经安装好vs2015
一、下载
1.cmake:用于编译freeglut源码,选择zip文件下载,免安装,我下载的是3.12.2版本
2.freeglut:用来取代glut,我下载的是3.0.0版本,解压
3.glew:下载source zip版本,我下载的是glew-2.1.0,解压
二、用cmake编译freeglut
1.打开cmake
2.选择source code路径和生成路径
source code路径就是解压的freeglut文件夹
自己选择一个生成的路径
3.点击configure,选择对应的vs版本,我这里是64位的vs2015
finish,等待几分钟,第一次 configure done
done之后再次点击configure,done之后再点击generate
generate done完成之后,cmake编译就完成了
4.在生成路径文件夹下找到freeglut.sln文件,用vs打开
找到ALL_BUILD,右键生成,注意选择debug还是release,如果两个都需要生成,要分别选择、生成
我这里选择debug和release x64环境生成
生成完成之后,在解决方案所在的文件夹下可以看到bin和lib文件夹,分别放了dll和lib文件
三、配置freeglut
1.头文件在原始下载解压的freeglut-3.0.0/include文件夹下
将GL文件夹复制到vs2015安装目录/VC/include文件夹下
2.dll文件分别在cmake生成文件夹/bin的debug和release文件夹下,将dll文件拷贝到 "C:\Windows\System32" 和 "C:\Windows\SysWOW64"下
对应我这里是将
freeglut-3.0.0-solution\bin\Debug\freeglutd.dll
和 freeglut-3.0.0-solution\bin\Release\freeglut.dll
都拷贝到
"C:\Windows\System32" 和 "C:\Windows\SysWOW64"下
3.lib文件分别在cmake生成文件夹/lib的debug和release文件夹下,分别将lib文件拷贝到vs安装目录/VC/lib/amd64文件夹下
即把 lib/debug/freeglutd.lib
lib/debug/freeglut_staticd.lib
lib/release/freeglut.lib
lib/release/freeglut_static.lib 拷贝到"C:\application\vs2015\VC\lib\amd64"
这样freeglut就配置完成了
四、配置GLEW
1.在glew-2.1.0/build/vc12 中找到glew.sln解决方案,用vs2015打开(需要升级项目)
2.升级完成之后,选择需要编译的环境debug/release 64/32,我这里选的是debug x64环境
右键解决方案 ->生成解决方案
3.在glew-2.1.0文件夹下看到bin和lib文件夹,分别是生成的dll和lib文件
将glew-2.1.0\bin\Debug\x64\glew32d.dll 文件拷贝到 "C:\Windows\System32" 和 "C:\Windows\SysWOW64"下
将glew-2.1.0\lib\Debug\x64\glew32d.lib 和 glew32sd.lib 两个文件拷贝到 C:\application\vs2015\VC\lib\amd64
4.将glew-2.1.0\include\GL下的.h文件全部复制到 vs2015安装目录/VC/include文件夹下
ps:如果后面测试程序出现LNK2019错误,在项目属性管理里面你对应的环境的属性对话框中,把glew32d.lib添加到附加依赖项中:链接器 -> 输入 -> 附加依赖项,加入glew32d.lib
如果需要32位环境就是拷贝相应的win32文件夹下的
五、测试程序
#include<GL\glew.h> //规定不能在glew之前引用gl.h文件,要写在前面
#include<GL\freeglut.h>
#include<iostream>
using namespace std;
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGLTest");
if (glewInit() == GLEW_OK)
{
cout<<"GLEW successful...\n";
}
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
运行结果