GLUT是一个OpenGL API的一个实现,在linux,os x都有广泛的应用. 而CMake是一个不错的C/C++项目管理工具.此处有一个栗子, 简单的使用了下GLUT.
GLUT代码很简单. 首先使用头文件
#ifdef __APPLE__ #include <OpenGL/gl.h> #include <Glut/glut.h> #elif defined(_WIN32) || defined(_WIN64) #include <GLUT/glcmolorut.h> #else #include <GL/glut.h> #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")
然后一切就齐活了.