最近工作重新要用到OpenGL,还得是X64、Release版本的,就在VS2015下把环境重新配置了一下(VS2010、VS2013下同)。感觉现在OpenGL在VS环境下的配置已经非常容易了,完全没有以前那么多问题,毕竟程序都是逐渐完善的。
1.编译freeglut
Freeglut是需要用CMake来生成VS项目工程的。打开CMake进行设置,在where is the source code 设置下载好的freeglut源代码目录,where is build the binaries设置存放生成VS工程的目录。然后点击configure,第一次configure会让你选择编译器,选择适合相应的VS编译器就行了,如我选的vs2015,win64。如下图所示。
再次点击configure,直到没有红色选项。然后点击Generate就在生成目录下生成了sln工程文件。打开freeglut.sln,当普通的VS项目编译就行了。编译生成的.dll在bin目录,生成的.lib在lib目录,需要注意的是头文件在源代码目录的inlcude文件夹中。
2.编译glew
Glew的编译就更加简单了,在glew的源代码的build目录中就已经准备好了vs工程文件:
如果没有相应的vs版本(比如我用的vs2015),就直接找个最近的版本编译好了,其实vs2008以后的版本差距都不是太大,应该都是能直接编译的。编译好后.dll在bin目录,.lib在lib目录,头文件在include目录。
3.构建环境
新建一个控制台项目测试环境,代码如下:
#include "stdafx.h"
#include "GLTest.h"
#include <iostream>
#include <GL/glew.h>
#include <GL/freeglut.h>
using namespace std;
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(500, 500);
glutInitWindowPosition(140, 140);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow("OpenGL Test!");
if (glewInit() == GLEW_OK)
{
printf("glewInit OK!\n\n");
}
printf("OpenGL version: %s\n", glGetString(GL_VERSION));
printf("GLSL version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
首先将freeglut和glew的头文件放到同一个include文件夹,在工程右键——属性——C/C++——常规——附加包含目录中指到该文件夹。然后直接右键——添加——现有项中添加刚生成的.lib文件。这样测试项目就可以编译了。最后找到测试项目生成exe文件目录,将需要的.dll放入其中就可以运行了。运行结果如下:
注意编译freeglut和glew的环境和调用环境一定要要对应好,64位程序就调用64位的dll,realse版本就调用realse的dll,否则可能出错。