最近工作重新要用到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(-, -, , );
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(, );
glutInitWindowPosition(, );
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 ;
}
首先将freeglut和glew的頭檔案放到同一個include檔案夾,在工程右鍵——屬性——C/C++——正常——附加包含目錄中指到該檔案夾。然後直接右鍵——添加——現有項中添加剛生成的.lib檔案。這樣測試項目就可以編譯了。最後找到測試項目生成exe檔案目錄,将需要的.dll放入其中就可以運作了。運作結果如下:
注意編譯freeglut和glew的環境和調用環境一定要要對應好,64位程式就調用64位的dll,realse版本就調用realse的dll,否則可能出錯。