Why FreeGLUT?
首先回答一个问题:为什么要用FreeGLUT,为什么不用GLUT。
通常在Visual C++下调用OpenGL,大家都是通过GLUT来调用。但是GLUT已经停止更新了,所以建议采用GLUT的另一个开源实现:FreeGLUT。FreeGLUT是以MIT License开源的,而且目前是一个活跃的、持续更新的开源项目。
下载FreeGLUT库
FreeGLUT的开源项目站点是:http://freeglut.sourceforge.net/
在该网站上你可以找到:Martin Payne’s Windows binaries (MSVC and MinGW)
通过该链接可以下载 freeglut 3.0.0 MSVC Package
在Visual C++中引用FreeGLUT
无非是在VC++ Directories中,将include目录加入到“Include Directories”,将lib目录添加到“Library Directories”。
注意:
1. 运行时,需要事先将 freeglut.dll 拷贝到运行目录下。
2. 要注意 freeglut.dll 和 freeglut.lib 有32位和64位版本之分。
另外,还需要在 C/C++ | Preprocessor | Preprocessor Definitions 的设置中,增加一个宏定义 NDEBUG。(参考:《FreeGLUT Tips: Resolve compile issue: error LNK1104: cannot open file ‘freeglutd.lib’》)
示例程序
// FreeGLUT_demo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <GL/glut.h>
static void keyboard (unsigned char key, int x, int y);
static void display (void);
int _tmain(int argc, _TCHAR* argv[])
{
glutInit (&argc, argv);
glutCreateWindow ("GLUT Test");
glutKeyboardFunc (&keyboard);
glutDisplayFunc (&display);
glutMainLoop ();
return 0;
}
static void keyboard (unsigned char key, int x, int y)
{
switch (key)
{
case '\x1B':
exit (EXIT_SUCCESS);
break;
}
}
static void display ()
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0f, 0.0f, 0.0f);
glBegin (GL_POLYGON);
glVertex2f (-0.5f, -0.5f);
glVertex2f (0.5f, -0.5f);
glVertex2f (0.5f, 0.5f);
glVertex2f (-0.5f, 0.5f);
glEnd ();
glFlush ();
}
运行结果: