CMake下使用GLUT

GLUT是一个OpenGL API的一个实现,在linux,os x都有广泛的应用. 而CMake是一个不错的C/C++项目管理工具.此处有一个栗子, 简单的使用了下GLUT.

GLUT代码很简单. 首先使用头文件

#ifdef __APPLE__
#include
#include
#elif defined(_WIN32) || defined(_WIN64)
#include
#else
#include
#endif

然后main函数如下:

int main(int argc,char *argv[])
{
glutInit(&argc,argv); // 初始化
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE|GLUT_DEPTH); // 初始化显示模式
glutInitWindowPosition(100,40); // 窗口位置
glutInitWindowSize(800,600); // 窗口大小

main_title_id = glutCreateWindow("Hello, OpenGL!"); // 创建窗口
glutDisplayFunc(DisplaySence); // 设置显示回调, 需要绘图时调用
glutReshapeFunc(ReshapeSence); // 设置更新回调, 窗口大小等更新时回调
setupRC();
glutTimerFunc(200,TimerFunction,1); // 设置刷新回调
glutMainLoop(); // 主循环
return 0;
}

基本就是初始化OpenGL,然后设置一堆回调函数,然后调用最重要的glutMainLoop进行主循环,然后触发各种事件后回调特定函数.

详细可以参考这个栗子.

然后是配置CMake也很容易. 在主配置文件中如下:

## OpenGL
FIND_PACKAGE(OpenGL REQUIRED)
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})

## OpenGL
FIND_PACKAGE(GLUT REQUIRED)
INCLUDE_DIRECTORIES(${GLUT_INCLUDE_DIR})

find_package获得opengl的头文件和library.我们得到四个变量OPENGL_INCLUDE_DIR, GLUT_INCLUDE_DIR, OPENGL_LIBRARIES, GLUT_LIBRARIES.

配置后include一些相关的header,然后link上对应library如下

ADD_EXECUTABLE(hello_glut hello_glut.cc)
TARGET_LINK_LIBRARIES(hello_glut ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
SET_TARGET_PROPERTIES(hello_glut PROPERTIES OUTPUT_NAME "hello_glut")

然后一切就齐活了.