GAMES101作业0:从零搭建图形学开发环境

张开发
2026/4/11 14:33:07 15 分钟阅读

分享文章

GAMES101作业0:从零搭建图形学开发环境
1. 为什么需要搭建图形学开发环境第一次接触GAMES101课程的同学可能会疑惑为什么不能直接用Windows系统写代码这里有个很现实的问题——图形学开发对系统环境有特殊要求。很多图形学库和工具链在Linux环境下运行更稳定而且课程作业使用的Eigen库在Linux上的安装配置也更简单。我自己刚开始学图形学时也踩过这个坑。当时尝试在Windows上配置环境光是处理各种依赖关系和路径问题就折腾了两天。后来改用虚拟机方案半小时就搞定了所有环境配置。这就像装修房子与其在老房子里修修补补不如直接找个毛坯房从头开始布置。课程推荐使用VirtualBox虚拟机不是没有道理的。它相当于在你的电脑里模拟出一个全新的Linux系统完全隔离于宿主系统。这样即使操作失误把系统玩坏了也影响不到你原来的Windows或macOS。对于初学者来说这种沙盒式的开发环境是最安全的选择。2. 虚拟机安装与配置2.1 选择适合的虚拟机软件VirtualBox是目前最友好的虚拟机方案它免费、开源且跨平台。我对比过VMware等商业软件发现VirtualBox对系统资源的占用更少特别适合笔记本用户。最新7.0版本对图形性能有显著优化这对后续运行图形学程序很关键。安装过程其实很简单去官网下载对应你操作系统的安装包双击安装所有选项保持默认即可安装完成后建议重启一次电脑有个小技巧安装时勾选创建桌面快捷方式以后启动会更方便。另外记得检查BIOS里的虚拟化选项是否开启Intel叫VT-xAMD叫SVM这个不开启虚拟机性能会大打折扣。2.2 创建Ubuntu虚拟机课程推荐使用Ubuntu 20.04 LTS这是个长期支持版本稳定性有保障。下载ISO镜像时建议选择国内镜像源比如阿里云或清华的镜像站速度会快很多。创建虚拟机时这几个参数要特别注意内存分配建议4GB起步有条件可以给8GB硬盘空间至少20GB建议40GB显存调到128MB默认只有16MB安装Ubuntu时有个关键选择是否安装第三方软件。建议勾选这个选项它会自动安装显卡驱动等必要组件。另外分区方案选择自动安装就好手动分区容易出错。3. Linux环境基础配置3.1 必须掌握的Linux命令刚接触Linux的同学可能会被命令行吓到其实日常开发只需要掌握几个基本命令sudo apt update更新软件源sudo apt install安装软件cd切换目录ls查看文件mkdir创建文件夹cp复制文件mv移动/重命名文件建议先在终端里玩个小游戏用mkdir创建几个目录用touch创建些空文件练习下基本操作。这就像学开车前先熟悉方向盘和踏板一样重要。3.2 开发工具安装图形学开发需要这几个核心工具编译器sudo apt install build-essentialCMakesudo apt install cmakeGitsudo apt install git这里有个常见坑点Ubuntu自带的GCC版本可能比较旧。建议用sudo apt install gcc-9 g-9安装较新版本然后用sudo update-alternatives命令设置默认编译器。4. Eigen库安装与验证4.1 安装Eigen库Eigen是图形学中最常用的线性代数库安装其实很简单sudo apt install libeigen3-dev但这里有个隐藏知识点Eigen是纯头文件库安装后头文件会放在/usr/include/eigen3目录。这意味着你不需要链接任何库文件直接包含头文件就能用。4.2 验证安装是否成功创建一个简单的测试程序eigen_test.cpp#include iostream #include Eigen/Dense int main() { Eigen::Matrix3f m Eigen::Matrix3f::Identity(); std::cout m std::endl; return 0; }然后用这个CMakeLists.txt编译cmake_minimum_required(VERSION 3.10) project(EigenTest) find_package(Eigen3 REQUIRED) add_executable(eigen_test eigen_test.cpp) target_link_libraries(eigen_test Eigen3::Eigen)如果能看到输出一个3x3的单位矩阵说明环境配置成功了。第一次看到矩阵输出时我特别兴奋感觉就像游戏里解锁了新技能一样。5. CMake项目实战5.1 理解CMake的作用很多新手会问为什么不能直接用g编译CMake主要有三大优势跨平台同一套配置可以在Linux、Windows、macOS上使用自动化自动处理依赖关系和编译顺序可扩展方便集成第三方库我刚开始也不习惯用CMake直到有次作业需要同时支持OpenCV和Eigen手动写编译命令差点崩溃。用了CMake后几行配置就搞定了所有依赖。5.2 典型图形学项目的CMake配置这是一个完整的CMake配置示例cmake_minimum_required(VERSION 3.10) project(GraphicsDemo) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Eigen3 REQUIRED) add_executable(main main.cpp) target_link_libraries(main Eigen3::Eigen)关键点说明CXX_STANDARD设为17是为了使用现代C特性find_package会自动定位Eigen的头文件路径target_link_libraries虽然Eigen是头文件库但这样写更规范6. 常见问题排查6.1 Eigen头文件找不到的问题这是最常见的问题通常有三种解决方案检查/usr/include下是否有eigen3目录在CMakeLists.txt中添加include_directories(/usr/include/eigen3)使用完整路径包含头文件#include eigen3/Eigen/Dense我建议用第二种方案因为最规范。第一种方案虽然简单但不够灵活第三种方案会让代码难以移植。6.2 虚拟机性能优化如果觉得虚拟机卡顿可以尝试安装VirtualBox增强工具在设置中启用3D加速分配更多CPU核心不超过物理核心数的一半使用SSD硬盘特别提醒虚拟机里不要运行图形化界面程序尽量用命令行操作。我见过有同学在虚拟机里开CLion结果卡得连键盘输入都有延迟。7. 进阶技巧7.1 使用VSCode远程开发虽然课程建议用虚拟机内的编辑器但我更推荐VSCode的远程开发功能。它能让你在Windows上用熟悉的编辑器写代码实际执行环境却在虚拟机里。配置方法虚拟机内安装SSH服务sudo apt install openssh-serverWindows上安装VSCode和Remote-SSH插件连接虚拟机IP地址这个方案既保留了Linux环境优势又获得了现代编辑器的便利。我第一次用这个功能时感觉发现了新大陆编码效率直接翻倍。7.2 使用Docker替代虚拟机对Linux比较熟悉的同学可以尝试Docker方案。它比虚拟机更轻量级启动只要几秒钟。准备一个包含所有开发环境的DockerfileFROM ubuntu:20.04 RUN apt update apt install -y build-essential cmake libeigen3-dev然后构建镜像docker build -t games101-env .这个方案适合想要深入学习系统配置的同学不过对新手来说门槛略高。我在第三次作业时才尝试Docker确实能节省不少环境配置时间。

更多文章