##1.main.cpp
#include<glad/glad.h>
#include <GLFW/glfw3.h>
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))