GLFW最简单的创建窗口+CMakelists文件

##1.main.cpp

#include
#include

int main(void)
{
    /* 初始化glfw库.必须在其他任何GLFW函数之前被调用,因为它负责初始化整个GLFW库。如果成功的话,该接口将返回GL_TRUE,否则就会返回GL_FALSE */
    if (!glfwInit())
        return -1;

    /* 创建一个窗口和它的OpenGL上下文.负责创建一个新的OpenGL环境和窗口,分辨率由width和height来指定 */
    GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", nullptr, nullptr);
    if (!window)
    {
        /* 没有创建会返回NULL */
        glfwTerminate();
        return -1;
    }

    /* 设置当前的窗口上下文.设置参数window中的窗口所关联的OpenGL环境为当前环境。这个环境在当前线程中会一直保持为当前环境,直到另一个环境被设置为当前环境,或者窗口被删除为止。 */
    glfwMakeContextCurrent(window);
    gladLoadGL();
    /* 循环,直到用户关闭窗口.如果用户准备关闭参数window所指定的窗口,那么此接口将会返回GL_TRUE,否则将会返回GL_FALSE。 */
    while (!glfwWindowShouldClose(window))
    {
        /* 在这里做渲染 */
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//设置清空屏幕所用的颜色
        glClear(GL_COLOR_BUFFER_BIT);//清空屏幕

        /* 交换缓冲区,即在window上更新内容.请求窗口系统将参数window关联的后缓存画面呈现给用户。 */
        glfwSwapBuffers(window);

        /* 轮询事件.告诉GLFW检查所有等待处理的事件和消息,包括操作系统和窗口系统中应当处理的消息。如果有消息正在等待,它会先处理这些消息再返回;否则该函数会立即返回 */
        glfwPollEvents();
    }
    //关闭glfw库本身。
    glfwTerminate();
    return 0;
}

 

该部分引用 OpenGL之GLFW入门学习 https://blog.csdn.net/meltlao2/article/details/80854788。运行时报错0xC0000005: 读取位置 0x00000000 时发生访问冲突,因此添加了 gladLoadGL();

##2.CMakelists.txt

cmake_minimum_required(VERSION 3.5)
project(imgui_1)
#查找当前目录下的所有源文件
#aux_source_directory(. DIR_SRCS)

#添加第三方的库

set(GLFW_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/GLFW3/include)
set(GLAD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glad/include)
set(GLAD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glad/src)
set(GLAD_SOURCE_FILE ${GLAD_SOURCE_DIR}/glad.c) 
set(GLFW_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/GLFW3/lib-vc2015-64)
set(GLFW_LIBS ${GLFW_LIB_DIR}/glfw3.lib)
set(IMGUI_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui)
set(IMGUI_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui)
file(GLOB IMGUI_SOURCE_FILES "${IMGUI_SOURCE_DIR}/*.cpp" ABSOLUTE)

add_executable(imgui_1 imgui_1/main.cpp  ${CURRENT_DIR} ${IMGUI_SOURCE_FILES} ${GLAD_SOURCE_FILE})  #生成可执行文件
target_include_directories(imgui_1 PRIVATE ${GLFW_INCLUDE_DIR} ${GLAD_INCLUDE_DIR} ${IMGUI_INCLUDE_DIR})
target_link_libraries(imgui_1 ${GLFW_LIBS} )
#include_directories($(D:/RVBUST/imgui/imgui))

 

 

你可能感兴趣的:(GLFW最简单的创建窗口+CMakelists文件)