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")

然后一切就齐活了.

Categories: Code

Yu

Ideals are like the stars: we never reach them, but like the mariners of the sea, we chart our course by them.

Leave a Reply

Your email address will not be published. Required fields are marked *