本文主要介绍在CLion中开发OpenGL项目时,glfw和glad的基本配置。
测试环境:CLion + GLFW3 + GLAD + MinGW64
-
下载glfw,本次实验中直接下载编译好的64位库文件。https://github.com/glfw/glfw/releases/download/3.3/glfw-3.3.bin.WIN64.zip
-
选择
配置glad 生成 下载glad.zipOpenGL
版本,访问https://glad.dav1d.de/,选择对应的版本和模式,然后点击GENARATE按钮,选择glad.zip
即可。
-
新建工程,然后新建
glfw解压目录 把include目录下GLFW文件夹复制到工程中include
和lib
目录。第一步,解压glfw-3.3.bin.WIN64.zip
文件,解压后如下图所示:
include
目录下;把lib-mingw-w64目录下所有文件复制到工程中lib
目录下。
第二步,解压上面生成的glad.zip,解压后如下图所示: glad解压目录 把include目录下所有文件夹复制到工程中include
目录下;把src/glad.c
复制到工程中。
最终工程结构为: image.png -
修改
CMakeLists.txt
,添加头文件和库,修改后内容为:
cmake_minimum_required(VERSION 3.14)
project(glfw C)
include_directories(include)
link_directories(lib)
set(CMAKE_C_STANDARD 99)
add_executable(glfw main.c glad.c)
target_link_libraries(glfw glfw3 opengl32)
- 测试。在使用
OpenGL
前需要初始化OpenGL版本,否则运行程序会闪退。初始化代码为:
if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){
printf("Failed to initialize OpenGL context");
}
以下是测试代码和运行结果:
#include <stdio.h>
#include <glad/glad.h>
#include<GLFW/glfw3.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
void size_callback(GLFWwindow *window, int width, int height) {
//printf("width: %d\theight: %d\n", width, height);
glViewport(0, 0, width, height);
}
int main() {
GLFWwindow *window;
glfwInit();
window = glfwCreateWindow(1024, 600, "Demo", NULL, NULL);
glfwSetWindowSizeCallback(window, size_callback);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){
printf("Failed to initialize OpenGL context");
}
printf("OpenGL %s, GLSL %s", glGetString(GL_VERSION), glGetString(GL_SHADING_LANGUAGE_VERSION));
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
glVertex2f(0.1, 0.1);
glVertex2f(0.3, 0.5);
glVertex2f(0.4, -0.1);
glEnd();
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
运行结果
注意:当使用VS编译器时,添加
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
可以隐藏命令行窗口,使用MinGW64时,该指令无效。
版权声明:本文为「txfly」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.jianshu.com/p/fd4cc689a20d
网友评论