Windows平台搭建篇:
方式一:采用Win7 VS2013X64 +freeglut-2.8.1+glew-1.7.0+gltools进行搭建。搭建流程如下:
1.下载glew-1.7.0:根据自己电脑操作系统位数来选择下载64位还是32位版本的glew。这里还需要把glew的源码下载下来,因为后面的gltools制作静态库时需要用到该源码文件。下载如图所示:
2.安装glew-1.7.0:由于我电脑是64位操作系统,所以我下载的是glew-1.7.0-win64.zip。下载下来后解压该zip文件,并进行以下操作:
一.新建一个文件夹OpenGL SuperBible Library,然后将位于include文件夹下的GL文件夹复制到“OpenGL SuperBible Library\include”(我新建的新文件夹)。如图所示:
二.将位于lib 文件夹下的 .lib 文件复制到“OpenGL SuperBible Library\lib“下。如图所示:
三.将位于bin 文件夹下的 .dll 复制到 C:\Windows\System32目录中,如果是64位系统则放在SysWOW64目录。如图所示:
3.下载freeglut2.8.1。将下载完毕的freeglut2.8.1进行解压,并将位于include文件夹下的GL文件夹复制到“OpenGL SuperBible Library\include“下。如图所示:
4.生成freeglut静态库:生成流程如下所示:
一.用VS2013打开\freeglut-2.8.1\VisualStudio\2012\freeglut.sln项目文件。如图所示:
二.将解决方案配置设置成Release_Static编译模式。如图所示 :
此时配置属性也会自动调成Release_Static编译模式。如图所示:
三.生成解决方案,此时会在freeglut-2.8.1\lib\x64生成一个freeglut_static.lib文件。最后将生成的freeglut_static.lib文件复制到“OpenGL SuperBible Library\lib“目录下。流程如图所示:
5.生成GLTools静态库:必须在glew和freeglut配置完毕后才能进行GLTools静态库的生成。生成过程如下所示:
一.下载GLTools源码工程:可以使用+svn从http://oglsuperbible5.googlecode.com/svn/trunk下载。也可以在csdn上面下载OpenGL超级宝典第五版源码。里面都包含有GLTools源码工程。
二.用vs2013新建一个win32静态库工程(它在Win32项目下),工程名为 GLTools ,记得去掉预编译头这个选项。如图所示:
三.将glew-1.7.0源代码工程下的src目录中的glew.c文件以及GLTools源码工程下的src目录中的文件(除了glew.c文件)添加到当前GLTools静态库工程中。如图所示:
四.将GLTools源码工程下的include目录中头文件(除了GL目录下面的glew头文件)复制到“OpenGL SuperBible Library\include“下,否则GLTools静态库工程中的源码文件就会报找不到头文件错误。流程如图所示:
五. 在项目 -》属性 -》C/C++ -》预处理器 -》预处理器定义中添加 _CRT_SECURE_NO_WARNINGS。然后编译生成,编译成功后会在工程Debug目录下生成 GLTools.lib静态库文件。最后将该GLTools.lib复制到“OpenGL SuperBible Library\lib“下。流程如图所示:
6.运行测试工程:用vs2013创建一个Win32控制台程序。测试流程如下:
一.在项目 -> 属性 -> 链接器 -> 输入 -> 依赖项中添加gltools.lib,glew32s.lib并在忽略特定默认库中添加 LIBCMT MSVCRT。如图所示:
到这里所有的include文件和lib文件均已经生成和拷贝完成(已经将生成好的相应文件打包上传,可直接下载使用,路径:https://download.csdn.net/download/j_d_c/11265230),“OpenGL SuperBible Library”中将包含如下目录和文件,如下所示:
二.将超级宝典第五版中的示例代码src\Chapter02\Triangle\Triangle.cpp添加到工程中,然后新建属性表并配置属性表,添加相应的include 和lib路径,如下图所示:
直接编译运行成功后,即可得到一个三角形图案。核心代码如下:
// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen.
#include // OpenGL toolkit
#include // Shader Manager Class
#ifdef __APPLE__
#include // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include // Windows FreeGlut equivalent
#endif
GLBatch triangleBatch;
GLShaderManager shaderManager;
///
// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///
// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
// Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );
shaderManager.InitializeStockShaders();
// Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
// Perform the buffer swap to display back buffer
glutSwapBuffers();
}
///
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
运行结果如下:
部分内内容参考自:https://blog.csdn.net/zjz520yy/article/details/81334722