GLFW 学习笔记 (一)

从零开始

  • 这几篇不会讲OpenGL和GLFW的原理性的东西,只是开发环境的建立。万事开头难,编程学习的开头就是开发环境,有了开发环境后,其他就可以自己摸索了。*

这一篇是直接使用GLFW来开发。

环境

  • Ubuntu 20.04桌面版

安装开发包

首先需要安装的是glfw库和头文件,我使用的还是X,所以使用下面的命令就可以了:

sudo apt install libglfw3-dev

如果是wayland,那么可以安装libglfw3-wayland。其他的包可以按需安装,要查看有哪些glfw相关的包,可以使用apt的search命令:

apt search glfw
  • 输出结果就不列了,在自己的系统中试一下就知道,或者去Ubuntu packages网站查找。*

测试代码

照着GLFW 官网的例子在 vscode 里面照抄一遍。因为上面已经把需要的头文件都安装好了,应该不会有任何的错误提示。

代码中使用了GLFW/glfw3.h,就不需要自己再 include OpenGL的头文件了,也不需要保护平台相关的头文件如 windows.h

#include <GLFW/glfw3.h>

int main(void) {
GLFWwindow* window;

if (!glfwInit()) {
return -1;
}

window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}

glfwMakeContextCurrent(window);

while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);

glfwSwapBuffers(window);

glfwPollEvents();
}

glfwTerminate();
return 0;
}

编译和链接

一般来说,这是设置开发环境最有挑战的一步,如果走得不顺,前面的可能都要推翻重来,比如开发包安装得不对,库版本和代码不一致。所以从零开始的时候,最好照着做一遍。有时候做事,看着浪费时间,超近路往往欲速则不达。

cc $(pkg-config --cflags glfw3 gl) -o test main.c $(pkg-config --static --libs glfw3 gl)

上面的命令会把 main.c 文件编译成文件名为 test 的程序。

cc 我系统中设置的就是gcc:

$ ll /usr/bin/cc
rwxrwxrwx 1 root root 20 5月 12 17:05 /usr/bin/cc -> /etc/alternatives/cc
$ ll /etc/alternatives/cc
lrwxrwxrwx 1 root root 12 5月 12 17:05 /etc/alternatives/cc -> /usr/bin/gcc
$ gcc --version
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果使用了C++的语法或库,把cc改成c++或者干脆用g++即可。

效果

glfw_first_window