使用CMakeLists.txt创建一个简单的opengl程序

现在流行的cmake编写工具

这篇教材主要是用cmak编写的CMakeLists.txt文件进行编译。

首先编写CMakeLists.txt文件

先找到glut,再找到opengl,然后两者和main程序进行链接,编译生成test可执行程序。

cmake_minimum_required(VERSION 2.8)
# Project Name
PROJECT(HW_OPENGL)

#########################################################
# FIND GLUT
#########################################################
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIRS})
link_directories(${GLUT_LIBRARY_DIRS})
add_definitions(${GLUT_DEFINITIONS})
if(NOT GLUT_FOUND)
    message(ERROR " GLUT not found!")
endif(NOT GLUT_FOUND)
#########################################################
# FIND OPENGL
#########################################################
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
link_directories(${OpenGL_LIBRARY_DIRS})
add_definitions(${OpenGL_DEFINITIONS})
if(NOT OPENGL_FOUND)
    message(ERROR " OPENGL not found!")
endif(NOT OPENGL_FOUND)
#########################################################
# Include Files
#########################################################
add_executable(test main.cpp)

########################################################
# Linking & stuff
#########################################################

# create the program "test"
target_link_libraries(test ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} )

main.cpp文件
#include

void draw(void) {
    // green background
    glClearColor(0.0f, 1.0f, 0.0f, 1.0f);

    glClear(GL_COLOR_BUFFER_BIT);

     glFlush();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);

    // setting up the display RGB color model + Alpha channel = GLUT_RGBA
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);

    // configure window position and size
    glutInitWindowPosition(50, 25);
    glutInitWindowSize(480, 480);

    // create window
    glutCreateWindow("Hello Opengl");

    // call to the drawing function
    glutDisplayFunc(draw);

    // loop require by opengl
    glutMainLoop();
    return 0;
}

相应的函数都有注释,glut开头的函数容易理解,就是窗口创建函数。,创建一个480*480的窗口。
glClearColor和glClear比较不好理解,
glClear的注释Clears the specified buffers to their current clearing values.

你可能感兴趣的:(opengl,opengl)