前言
2025-02-27 06:42:27
时隔一年,我再次重拾计算机图形学,内心怀揣着激动。面试官的一言,让我又燃起了对渲染的渴望。借着计算机图形学课程的机会,我想要重新认识一下这些经典的算法,并花一个学期的时间,编写一个软渲染的管线。我非常感谢字节的面试官。是他让我看到了工业界对渲染的需求,也让我再次燃起了大一刚学习图形学时的激情。
首先在开始前,明确一下我的测试环境。我使用的是Ubuntu22.04进行下面的流程测试。
依赖下载
首先我们安装一些必须的依赖,方便我们自己编译freeglut和opencv。
1 | sudo apt update |
然后我们可以前往freeglut官网和opencv官网找到它们的发行版本,直接下载源码即可。测试使用的版本如下:
- OpenCV – 4.11.0
- freeglut - 3.6.0
1 | wget https://github.com/opencv/opencv/archive/refs/tags/4.11.0.zip |
编译glut和opencv
glut
1 | cd freeglut-3.6.0 |
这里记住安装的路径,一般为/usr/local/lib/
。
opencv
1 | cd opencv-4.11.0 |
配置pkg-config
编译并安装好动态/静态库后,我们要配置pkg-config的索引,前面的依赖安装中安装了pkg-config
,你可以用这个测试它:
1 | echo $PKG_CONFIG_PATH |
有可能这个变量是空的,我们主要通过设置这个环境变量来添加pkg索引。你可以在任何你熟悉的地方编写环境变量的加载,这里我们使用profile.d/来添加。
1 | touch /etc/profile/pkgconfig.sh |
将export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
加入该文件的最后一行。然后检查自己的库是否能被索引到:
1 | pkg-config --libs opencv4 |
类似的输出是正确的:
配置ld
然后我们需要为两个库编写ld conf。
1 | sudo vim /etc/ld.so.conf.d/glut.conf |
最后重新载入
1 | sudo ldconfig |
两个文件都只需要写入/usr/local/lib
即可。
CMakeLists.txt
这里使用了头歌上的两个简单的绘制代码来测试我们最后的环境:
student.h
1 | // student.h |
test.cpp
1 | //test.cpp |
CMakeLists.txt
1 | cmake_minimum_required(VERSION 3.1) |
编译
1 | cmake -S . -B build |