能力缺口与课程定位
射线投射引擎在现代 3D 游戏开发中扮演着核心角色,从物理交互到光影追踪,其应用场景广泛却鲜有课程系统讲解。许多开发者知道射线投射能实现反射、阴影等效果,但对其底层原理和实现方式缺乏直观理解。这门课直接弥补这一缺口,从数学和几何原理出发,通过代码实践带你掌握射线投射的核心算法。课程重点不在于复用现成框架,而是让你理解算法逻辑、掌握底层实现,从而能根据需求定制和优化引擎。适合那些想深入理解游戏渲染管线、动手能力强的学习者,尤其是那些对物理模拟和图形算法感兴趣的技术人员。
与其他炫技教程不同,这门课强调从基础概念到可执行代码的完整链路。你会看到透视投影如何转化为射线,视锥体裁剪如何过滤无效射线,以及不同几何体碰撞检测的数学推导。课程避免使用封装过度的库,直接用 C++ 或 GLSL 展示核心逻辑,让你在动手中夯实知识。例如,在讲解射线-多边形碰撞时,不会直接提供 API 调用示例,而是从 Sutherland-Hodgman 算法的每一步推导开始,用向量运算解释如何判断射线是否穿透多边形。
配套练习的设计思路
课程练习设计遵循“理论-验证-拓展”三段式结构。模块 1 会要求你用纸笔推导基本公式,比如计算视点投影到屏幕的射线方向;模块 2 则提供可交互的在线编辑器,让你动态调试射线与多边形碰撞的阈值参数;模块 3 要求你重构代码,用不同平面方程实现地板和天花板的纹理映射。这种渐进式练习能帮你快速验证理解,发现算法细节中的陷阱。
特别设计的挑战题会模拟真实游戏场景。比如,要求你实现“光线从玩家眼睛出发,穿过屏幕每个像素点,检测场景中所有可交互物体的射线投射结果”,这需要你综合运用视锥体裁剪和不同碰撞检测算法。提交的代码将根据“算法效率、边界处理、可读性”三个维度评分,配套的代码评审环节会具体到每行逻辑是否冗余、变量命名是否规范等细节。这些练习能让你从“知道算法”到“写出鲁棒的代码”完成过渡。
看完应能回答的问题清单
学完这门课,你应该能回答以下关键问题:为什么视锥体裁剪涉及三角函数?Sutherland-Hodgman 算法中,如何用子多边形替代被切割的多边形?如何将球体碰撞的二次方程解法扩展到椭球体?这些问题的答案分散在课程各模块,但最终会聚到“如何构建一个高效的碰撞检测子系统”。通过反复提问,你会形成从抽象概念到具体实现的思维路径。
更进阶的问题包括:如何优化射线-球体碰撞算法以支持动态场景?如何结合 BVH(Bounding Volume Hierarchy)加速射线-多边形碰撞检测?课程会给出思路框架,但不会提供现成答案,因为这正是让你持续提升的关键。课程资料包中包含学习者的常见误区合集,比如“认为所有碰撞检测都能用 Sutherland-Hodgman 解决”或“忽略浮点数精度对相交计算的巨大影响”,这些问题在配套测试中反复出现,值得重点关注。
适合的基础与学习顺序建议
这门课不适合零基础学习者,但也不排斥跨领域转行者。你需要掌握以下前提知识:线性代数(向量、矩阵运算需达到能用代码实现的程度)、基础 C++(了解内存管理、模板等特性)、简单的 3D 数学(坐标变换、四元数等概念)。如果同时具备以下基础,学习效率会更高:
- 能独立编写简单的 3D 图形渲染管线代码
- 理解过碰撞检测的基本概念(如 AABB、圆形碰撞体等)
- 熟悉至少一种图形 API(如 OpenGL、DirectX)或游戏引擎(如 Unity、Unreal)
建议的学习顺序是:先完整吃透模块 1 和 2,这两部分是后续所有内容的基础,尤其是视锥体裁剪的实现细节。模块 3 的平面碰撞检测相对独立,可以穿插在模块 2 中学习。模块 4 和 5 可以根据项目需求选择性学习,若要构建完整的游戏引擎,建议按顺序推进。资料包中包含一个“算法对比速查表”,将各模块核心代码片段和性能测试数据整理成表格,方便你在开发中快速查阅。
学完能独立做什么
课程最终目标是培养你独立构建可定制射线投射引擎的能力。具体来说,你能完成以下任务: 1. 为游戏场景中的所有碰撞体(平面、球体、多边形等)生成射线投射数据 2. 根据需求调整算法参数,比如优化动态场景的碰撞检测性能 3. 将射线投射结果用于实现光影追踪、物理反馈等高级效果
更进一步,你将理解射线投射与 CPU/GPU 计算的协同方式。比如,如何将球体碰撞检测的数学表达式转化为 GLSL 代码交由 GPU 运行,或者如何用多线程并行处理大量射线投射请求。这些能力在开发实时渲染系统时至关重要。资料包中的“引擎扩展清单”记录了常见游戏场景下的扩展方向,如支持射线与网格的碰撞、实现光线步进算法等,可以作为长期开发时的参考。
资料如何配合练习
课程配套的资料包包括四个部分: 1. 理论补充材料:用 LaTeX 绘制的核心公式推导,比视频更精炼的笔记 2. 代码示例库:包含每个模块的完整 C++ 代码,以及对应的单元测试框架 3. 交互式实验:用 WebGL 实现的射线投射可视化工具,可以动态调整参数观察结果 4. 学习者代码库:匿名提交的作业片段,标注了常见错误和优化建议
练习建议结合资料包进行:先从交互式实验中理解算法效果,再参考理论补充材料掌握数学原理,最后用代码示例库搭建基础框架并逐步添加自己的优化。例如,在练习模块 3 时,可以先在交互实验中观察不同平面方程对碰撞结果的差异,然后查阅理论资料理解法线向量对性能的影响,最后修改代码示例,尝试用不同的数据结构(如 KD-Tree)加速碰撞检测。资料包中还有一个“代码风格指南”,会具体到命名规范、注释方式等细节,帮助你的代码更易于维护和扩展。
课程介绍
课程概述
本课程旨在教授开发者如何从头开始构建一个用于 3D 游戏的射线投射引擎。课程将涵盖射线投射算法的基础知识,并指导学员通过动手实践来实现自己的引擎。
课程目标
- 了解射线投射算法在 3D 游戏中的应用
- 掌握射线投射算法的数学和几何原理
- 学习如何实现射线-多边形、射线-平面和射线-球体的碰撞检测
- 能够构建一个用于 3D 游戏的可定制射线投射引擎
课程大纲
模块 1:射线投射基础
- 射线和射线投射的概念
- 透视投影和正交投影
- 视锥体裁剪
模块 2:射线-多边形碰撞
- 苏therland-Hodgman 算法
- 凸多边形和平面多边形的碰撞检测
- 多边形纹理贴图
模块 3:射线-平面碰撞
- 平面方程和法线向量
- 射线与平面的相交点计算
- 地板和天花板纹理贴图
模块 4:射线-球体碰撞
- 球体方程和半径
- 射线与球体的相交点计算
- 球体纹理贴图
模块 5:构建射线投射引擎
- 视锥体裁剪实现
- 数据结构和算法设计
- 碰撞检测优化
模块 6:高级主题
- 二叉空间分割 (BSP) 树
- 光线追踪
- 阴影投射
课程适合人群
- 对 3D 游戏开发感兴趣的开发者
- 具有 C++ 或类似编程语言经验者
- 希望从头开始构建自己射线投射引擎的任何人
课程时长
大约 15-20 小时,根据个人的学习进度而异。
课程形式
- 视频讲座
- 代码演示
- 练习和项目
课程完成后
完成本课程后,您将:
- 对射线投射算法在 3D 游戏中的应用有一个深入的理解
- 能够构建一个适用于您自己的 3D 游戏的自定义射线投射引擎
- 了解射线投射引擎优化和故障排除的技术
- 为进一步探索 3D 游戏图形学奠定坚实的基础
课程目录
/15-026-游戏开发中的射线投射引擎编程/
│├─01. Introduction and Learning Outcomes.mp4 92MB
│├─01. Introduction and Learning Outcomes.srt 15.3KB
│├─01. Introduction and Learning Outcomes.vtt 16.7KB
│├─02. How to Take this Course.srt 3.9KB
│├─02. How to Take this Course.vtt 4.1KB
│├─02. How to Take this Course.mp4 4.3MB
│├─03. An Overview of the Raycasting Algorithm.mp4 40.7MB
│├─03. An Overview of the Raycasting Algorithm.srt 9KB
│├─03. An Overview of the Raycasting Algorithm.vtt 9.6KB
│├─04. Raycasting or Raytracing.srt 9.9KB
│├─04. Raycasting or Raytracing.vtt 10.2KB
│├─04. Raycasting or Raytracing.mp4 53.6MB
│├─05. Raycasting Limitations.srt 5.3KB
│├─05. Raycasting Limitations.vtt 5.6KB
│├─05. Raycasting Limitations.mp4 23MB
│├─06. A Review of Degrees and Radians.mp4 74MB
│├─06. A Review of Degrees and Radians.srt 13.6KB
│├─06. A Review of Degrees and Radians.vtt 14.4KB
│├─07. A Review of Sine Cosine and Tangent.mp4 112.2MB
│├─07. A Review of Sine Cosine and Tangent.srt 22.5KB
│├─07. A Review of Sine Cosine and Tangent.vtt 24.3KB
│├─08. Defining the 2D Map Grid.mp4 46.1MB
│├─08. Defining the 2D Map Grid.srt 11.2KB
│├─08. Defining the 2D Map Grid.vtt 11.8KB
│├─09. Coding the Map Class.mp4 59.2MB
│├─09. Coding the Map Class.srt 21.1KB
│├─09. Coding the Map Class.vtt 21.8KB
│├─10. Player Movement.srt 8.2KB
│├─10. Player Movement.vtt 8.9KB
│├─10. Player Movement.mp4 41.6MB
│├─11. Coding the Player Movement.srt 27KB
│├─11. Coding the Player Movement.vtt 28.4KB
│├─11. Coding the Player Movement.mp4 59MB
│├─12. Coding the Map Collision.mp4 42MB
│├─12. Coding the Map Collision.srt 11.6KB
│├─12. Coding the Map Collision.vtt 11.9KB
│├─13. Defining the Field of View.mp4 75.6MB
│├─13. Defining the Field of View.srt 11.4KB
│├─13. Defining the Field of View.vtt 12.1KB
│├─14. Coding the Field of View Ray Increments.mp4 67.6MB
│├─14. Coding the Field of View Ray Increments.srt 21.2KB
│├─14. Coding the Field of View Ray Increments.vtt 22KB
│├─15. Finding Wall Hit.srt 10.7KB
│├─15. Finding Wall Hit.vtt 11.2KB
│├─15. Finding Wall Hit.mp4 55MB
│├─16. Finding Horizontal Intersections.srt 29.9KB
│├─16. Finding Horizontal Intersections.vtt 31.8KB
│├─16. Finding Horizontal Intersections.mp4 143.7MB
│├─17. Finding Vertical Intersections.srt 10.3KB
│├─17. Finding Vertical Intersections.vtt 10.9KB
│├─17. Finding Vertical Intersections.mp4 55.7MB
│├─18. Coding X-intercept and Y-intercept.mp4 87.6MB
│├─18. Coding X-intercept and Y-intercept.srt 32.1KB
│├─18. Coding X-intercept and Y-intercept.vtt 33.2KB
│├─19. Coding the Horizontal Wall Intersection.mp4 39.2MB
│├─19. Coding the Horizontal Wall Intersection.srt 13.9KB
│├─19. Coding the Horizontal Wall Intersection.vtt 14.4KB
│├─20. Coding the Vertical Intersection.mp4 74.3MB
│├─20. Coding the Vertical Intersection.srt 27.5KB
│├─20. Coding the Vertical Intersection.vtt 28.7KB
│├─21. Fixing the Intersection Offset Error.mp4 31.4MB
│├─21. Fixing the Intersection Offset Error.srt 9.3KB
│├─21. Fixing the Intersection Offset Error.vtt 9.7KB
│├─22. Orientation as Angles or Vectors.srt 4.9KB
│├─22. Orientation as Angles or Vectors.vtt 5.1KB
│├─22. Orientation as Angles or Vectors.mp4 31.5MB
│├─23. Wall Projection.srt 10.7KB
│├─23. Wall Projection.vtt 11.2KB
│├─23. Wall Projection.mp4 47MB
│├─24. Finding the Wall Strip Height.mp4 73.9MB
│├─24. Finding the Wall Strip Height.srt 15.1KB
│├─24. Finding the Wall Strip Height.vtt 16.6KB
│├─25. Visualizing the Minimap.srt 6.2KB
│├─25. Visualizing the Minimap.vtt 6.3KB
│├─25. Visualizing the Minimap.mp4 24.3MB
│├─26. Coding the Wall Rendering.srt 19.9KB
│├─26. Coding the Wall Rendering.vtt 20.6KB
│├─26. Coding the Wall Rendering.mp4 65.4MB
│├─27. Fixing the Fishbowl Distortion.mp4 77.7MB
│├─27. Fixing the Fishbowl Distortion.srt 13.8KB
│├─27. Fixing the Fishbowl Distortion.vtt 15.4KB
│├─28. Implementing Wall Shading by Depth.srt 6.4KB
│├─28. Implementing Wall Shading by Depth.vtt 6.7KB
│├─28. Implementing Wall Shading by Depth.mp4 23.3MB
│├─29. BrightDark Wall Sides.srt 15.8KB
│├─29. BrightDark Wall Sides.vtt 16KB
│├─29. BrightDark Wall Sides.mp4 27.8MB
│├─30. First Steps in C.mp4 43.5MB
│├─30. First Steps in C.srt 14KB
│├─30. First Steps in C.vtt 14.8KB
│├─31. Working with Makefile.mp4 19.2MB
│├─31. Working with Makefile.srt 19.9KB
│├─31. Working with Makefile.vtt 20KB
│├─32. Installing Visual Studio and SDL on Windows.mp4 30.2MB
│├─32. Installing Visual Studio and SDL on Windows.srt 20KB
│├─32. Installing Visual Studio and SDL on Windows.vtt 20.4KB
│├─33. Creating a SDL Window.mp4 37MB
│├─33. Creating a SDL Window.srt 25KB
│├─33. Creating a SDL Window.vtt 26.4KB
│├─34. SDL Rendering and Event Polling.srt 13.8KB
│├─34. SDL Rendering and Event Polling.vtt 14.6KB
│├─34. SDL Rendering and Event Polling.mp4 23.8MB
│├─35. Rendering SDL Rectangles.srt 8.9KB
│├─35. Rendering SDL Rectangles.vtt 9.2KB
│├─35. Rendering SDL Rectangles.mp4 18.7MB
│├─36. Game Loop Overview.srt 8.8KB
│├─36. Game Loop Overview.vtt 9.3KB
│├─36. Game Loop Overview.mp4 26.6MB
│├─37. Coding a Fixed Time Step Game Loop.mp4 18.7MB
│├─37. Coding a Fixed Time Step Game Loop.srt 11.6KB
│├─37. Coding a Fixed Time Step Game Loop.vtt 12.1KB
│├─38. SDL Delay.mp4 43MB
│├─38. SDL Delay.srt 13.1KB
│├─38. SDL Delay.vtt 13.6KB
│├─39. Drawing the Map with SDL.mp4 31.8MB
│├─39. Drawing the Map with SDL.srt 20KB
│├─39. Drawing the Map with SDL.vtt 20.5KB
│├─40. Player Movement and SDL Events.srt 18.1KB
│├─40. Player Movement and SDL Events.vtt 18.2KB
│├─40. Player Movement and SDL Events.mp4 28.4MB
│├─41. Implementing Wall Collision in C.mp4 6.1MB
│├─41. Implementing Wall Collision in C.srt 4.4KB
│├─41. Implementing Wall Collision in C.vtt 4.3KB
│├─42. Ray Struct and FOV.mp4 24.2MB
│├─42. Ray Struct and FOV.srt 13.7KB
│├─42. Ray Struct and FOV.vtt 14.1KB
│├─43. Translating the Horizontal Intersection to C.mp4 28.4MB
│├─43. Translating the Horizontal Intersection to C.srt 19.7KB
│├─43. Translating the Horizontal Intersection to C.vtt 20.4KB
│├─44. Translating the Vertical Intersection to C.mp4 35.6MB
│├─44. Translating the Vertical Intersection to C.srt 17.5KB
│├─44. Translating the Vertical Intersection to C.vtt 17.8KB
│├─45. Rendering Rays.srt 11.9KB
│├─45. Rendering Rays.vtt 11.9KB
│├─45. Rendering Rays.mp4 17.3MB
│├─46. The Color Buffer.mp4 113.4MB
│├─46. The Color Buffer.srt 38.4KB
│├─46. The Color Buffer.vtt 39.8KB
│├─47. Color Buffer Implementation.srt 21.9KB
│├─47. Color Buffer Implementation.vtt 22.6KB
│├─47. Color Buffer Implementation.mp4 26.4MB
│├─48. Freeing Allocated Resources.srt 7.1KB
│├─48. Freeing Allocated Resources.vtt 7.4KB
│├─48. Freeing Allocated Resources.mp4 8.6MB
│├─49. Creating the Wall Projection.mp4 39.7MB
│├─49. Creating the Wall Projection.srt 20.7KB
│├─49. Creating the Wall Projection.vtt 21.8KB
│├─50. Exercise Ceiling & Floor Solid Colors.mp4 4.5MB
│├─50. Exercise Ceiling & Floor Solid Colors.srt 1.7KB
│├─50. Exercise Ceiling & Floor Solid Colors.vtt 1.7KB
│├─51. Ceiling & Floor Solid Color Implementation.srt 2.3KB
│├─51. Ceiling & Floor Solid Color Implementation.vtt 2.4KB
│├─51. Ceiling & Floor Solid Color Implementation.mp4 6.1MB
│├─52. Representing Textures.srt 15.1KB
│├─52. Representing Textures.vtt 15.5KB
│├─52. Representing Textures.mp4 46.5MB
│├─53. Creating a Texture Programmatically.mp4 14MB
│├─53. Creating a Texture Programmatically.srt 7.8KB
│├─53. Creating a Texture Programmatically.vtt 8.6KB
│├─54. Mapping Textures to Wall.mp4 67.4MB
│├─54. Mapping Textures to Wall.srt 9.4KB
│├─54. Mapping Textures to Wall.vtt 9.8KB
│├─55. Implementing Wall Texturing.srt 23.8KB
│├─55. Implementing Wall Texturing.vtt 24.8KB
│├─55. Implementing Wall Texturing.mp4 51.6MB
│├─56. Multiple Textures.srt 8.4KB
│├─56. Multiple Textures.vtt 9.2KB
│├─56. Multiple Textures.mp4 34MB
│├─57. Multiple Texture Code.mp4 34.3MB
│├─57. Multiple Texture Code.srt 15.7KB
│├─57. Multiple Texture Code.vtt 17KB
│├─58. Fixed Size Data Types.mp4 23.8MB
│├─58. Fixed Size Data Types.srt 8.2KB
│├─58. Fixed Size Data Types.vtt 8.6KB
│├─59. Using Fixed Size Integer Types.srt 2.5KB
│├─59. Using Fixed Size Integer Types.vtt 2.6KB
│├─59. Using Fixed Size Integer Types.mp4 5.1MB
│├─60. Libraries to Decode PNG Files.srt 14.8KB
│├─60. Libraries to Decode PNG Files.vtt 15.1KB
│├─60. Libraries to Decode PNG Files.mp4 23.1MB
│├─61. Loading External PNG Files.mp4 59MB
│├─61. Loading External PNG Files.srt 46.9KB
│├─61. Loading External PNG Files.vtt 48.4KB
│├─62. Activity Field of View Distortion.mp4 10.8MB
│├─62. Activity Field of View Distortion.srt 6.7KB
│├─62. Activity Field of View Distortion.vtt 7KB
│├─63. Understanding the Angle Increment Distortion.mp4 49.9MB
│├─63. Understanding the Angle Increment Distortion.srt 16.4KB
│├─63. Understanding the Angle Increment Distortion.vtt 17.8KB
│├─64. Coding the Angle Increment Distortion Fix.mp4 15.8MB
│├─64. Coding the Angle Increment Distortion Fix.srt 11.7KB
│├─64. Coding the Angle Increment Distortion Fix.vtt 12.3KB
│├─65. Full Screen Window.mp4 55.2MB
│├─65. Full Screen Window.srt 28.5KB
│├─65. Full Screen Window.vtt 29.6KB
│├─66. Refactoring the Graphics File.mp4 72.7MB
│├─66. Refactoring the Graphics File.srt 50.2KB
│├─66. Refactoring the Graphics File.vtt 51.4KB
│├─67. Drawing Filled Rectangles.srt 3.2KB
│├─67. Drawing Filled Rectangles.vtt 3.3KB
│├─67. Drawing Filled Rectangles.mp4 4.5MB
│├─68. Refactoring the Map File.mp4 38.5MB
│├─68. Refactoring the Map File.srt 23.6KB
│├─68. Refactoring the Map File.vtt 24.3KB
│├─69. Refactoring the Ray and Player File.mp4 35.7MB
│├─69. Refactoring the Ray and Player File.srt 24KB
│├─69. Refactoring the Ray and Player File.vtt 24.6KB
│├─70. The Line Equation.srt 22.5KB
│├─70. The Line Equation.vtt 23.6KB
│├─70. The Line Equation.mp4 52.5MB
│├─71. Rasterizing Lines.srt 28.9KB
│├─71. Rasterizing Lines.vtt 30.4KB
│├─71. Rasterizing Lines.mp4 80.4MB
│├─72. Coding the DDA Line Algorithm.mp4 10MB
│├─72. Coding the DDA Line Algorithm.srt 5.5KB
│├─72. Coding the DDA Line Algorithm.vtt 5.9KB
│├─73. Refactoring the Wall Projection File.mp4 20.4MB
│├─73. Refactoring the Wall Projection File.srt 12.5KB
│├─73. Refactoring the Wall Projection File.vtt 13KB
│├─74. Creating a Type Definition for Color Values.mp4 10.3MB
│├─74. Creating a Type Definition for Color Values.srt 9KB
│├─74. Creating a Type Definition for Color Values.vtt 9.1KB
│├─75. Sending Parameters by Reference.mp4 7.2MB
│├─75. Sending Parameters by Reference.srt 6.5KB
│├─75. Sending Parameters by Reference.vtt 6.7KB
│├─76. Refactoring the Ray-Facing Code.srt 7.3KB
│├─76. Refactoring the Ray-Facing Code.vtt 7.5KB
│├─76. Refactoring the Ray-Facing Code.mp4 15.6MB
│├─77. Wall Texture Color Intensity.mp4 28.2MB
│├─77. Wall Texture Color Intensity.srt 12.4KB
│├─77. Wall Texture Color Intensity.vtt 12.8KB
│├─78. Coding the Texture Color Intensity.mp4 15MB
│├─78. Coding the Texture Color Intensity.srt 8.1KB
│├─78. Coding the Texture Color Intensity.vtt 8.5KB
│├─79. Raycasting Sprites.srt 8.6KB
│├─79. Raycasting Sprites.vtt 9.1KB
│├─79. Raycasting Sprites.mp4 42.8MB
│├─80. Sprite Type Definition.srt 6.4KB
│├─80. Sprite Type Definition.vtt 6.7KB
│├─80. Sprite Type Definition.mp4 26.2MB
│├─81. Coding the Sprite Typedef.mp4 63MB
│├─81. Coding the Sprite Typedef.srt 30KB
│├─81. Coding the Sprite Typedef.vtt 31.2KB
│├─82. Rendering Sprites in the Minimap.mp4 13MB
│├─82. Rendering Sprites in the Minimap.srt 6.8KB
│├─82. Rendering Sprites in the Minimap.vtt 6.9KB
│├─83. Identifying Visible Sprites.mp4 25.8MB
│├─83. Identifying Visible Sprites.srt 7.5KB
│├─83. Identifying Visible Sprites.vtt 8.1KB
│├─84. Coding the Visible Sprites.mp4 27.6MB
│├─84. Coding the Visible Sprites.srt 9.7KB
│├─84. Coding the Visible Sprites.vtt 9.8KB
│├─85. Finding the Sprite Distance.mp4 17.3MB
│├─85. Finding the Sprite Distance.srt 6.9KB
│├─85. Finding the Sprite Distance.vtt 7.3KB
│├─86. Normalizing Player Rotation Angle.mp4 20MB
│├─86. Normalizing Player Rotation Angle.srt 6.4KB
│├─86. Normalizing Player Rotation Angle.vtt 6.5KB
│├─87. Calculating the Sprite Projection Height.mp4 50.1MB
│├─87. Calculating the Sprite Projection Height.srt 18.3KB
│├─87. Calculating the Sprite Projection Height.vtt 19.4KB
│├─88. Calculating the Sprite X Position.mp4 23.5MB
│├─88. Calculating the Sprite X Position.srt 6.6KB
│├─88. Calculating the Sprite X Position.vtt 6.8KB
│├─89. Sprite Rectangle Position in the Screen.mp4 32.5MB
│├─89. Sprite Rectangle Position in the Screen.srt 10.1KB
│├─89. Sprite Rectangle Position in the Screen.vtt 10.8KB
│├─90. Displaying Textured Sprites.srt 19.2KB
│├─90. Displaying Textured Sprites.vtt 19.8KB
│├─90. Displaying Textured Sprites.mp4 57.6MB
│├─91. Activity Sorting Sprites.srt 2.9KB
│├─91. Activity Sorting Sprites.vtt 3.1KB
│├─91. Activity Sorting Sprites.mp4 6.4MB
│├─92. Sorting Sprites by Distance.mp4 22.4MB
│├─92. Sorting Sprites by Distance.srt 6.6KB
│├─92. Sorting Sprites by Distance.vtt 6.9KB
│├─93. Sprites Behind Walls.mp4 35.7MB
│├─93. Sprites Behind Walls.srt 8.5KB
│├─93. Sprites Behind Walls.vtt 8.8KB
│├─94. Fixing the Sprite Fishbowl Distortion.mp4 14.5MB
│├─94. Fixing the Sprite Fishbowl Distortion.srt 4KB
│├─94. Fixing the Sprite Fishbowl Distortion.vtt 4.3KB
│├─95. Concluding our Raycasting Implementation.mp4 24.1MB
│├─95. Concluding our Raycasting Implementation.srt 7.4KB
│├─95. Concluding our Raycasting Implementation.vtt 7.9KB
│├─96. Notes on Look-up Tables.mp4 68.6MB
│├─96. Notes on Look-up Tables.srt 13.3KB
│├─96. Notes on Look-up Tables.vtt 14.3KB
│├─Raycasting Programming with C.txt 2.8KB
│├─code.zip 8.7MB
│├─获取更多精品课程资源.url 120byte





