1. glad 窗体创建过程
1.1 初始化glfw基本环境
glfwlnit(); // 初始化库
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4); //主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,6); //次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); //使用核心模式
1.2 创建窗体对象
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); //窗体对象
glfwMakeContextCurrent(window); //设置当前窗体为opengl绘制的舞台
1.3 执行窗体循环
while (!glfwWindowShouldClose(window)) {
glfwPollEventsO; //接收并分发窗口消息
}
glfwTerminate(); // 退出程序
2. 测试代码
项目工程结构:
编译运行可参考glfw编译测试代码部分:https://blog.csdn.net/qq_51355375/article/details/140561133
编译命令:
cmake -G "MinGW Makefiles"
make
编译完成后进入bin目录执行app.exe即可
main.c
#include <glad/glad.h> // glad 头文件需要在glfw前引入
#include <GLFW/glfw3.h>
int main(void) {
GLFWwindow* window;
if (!glfwInit())
return -1;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); //主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); //次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //使用核心模式
window = glfwCreateWindow(800, 600, "Hello World", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window); //设置当前窗体为opengl绘制的舞台
while (!glfwWindowShouldClose(window)) {
glfwPollEvents(); //接收并分发窗口消息
}
glfwTerminate();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(glfw_example VERSION 1.0 LANGUAGES C)
# 设置 C 标准
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED True)
# 设置包含 GLFW 头文件的目录
include_directories(${PROJECT_SOURCE_DIR}/include)
# 假设库文件在 lib 目录下,并且库文件名为 libglfw3.a
link_directories(${PROJECT_SOURCE_DIR}/lib)
# 设置可执行文件的输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
#搜素源文件
file(GLOB SRC_LIST "src/*.c")
# 添加可执行文件
add_executable(app ${SRC_LIST})
# 链接 GLFW 库
target_link_libraries(app glfw3)
测试成功: