移动端网站设计尺寸,企业为什么融资,怎么做营销推广方案,百度贴吧网页入口#x1f517; 《C语言趣味教程》#x1f448; 猛戳订阅#xff01;#xff01;#xff01;
#x1f4ad; 写在前面#xff1a;本专栏主要内容是关于 3D 计算机图形技术的学习#xff0c;重点是学习与此技术相关的 3D 实时渲染 (3D real-time rendering) 技术。我们会以… 《C语言趣味教程》 猛戳订阅 写在前面本专栏主要内容是关于 3D 计算机图形技术的学习重点是学习与此技术相关的 3D 实时渲染 (3D real-time rendering) 技术。我们会以 理论 实践 的方式进行讲解将重点介绍基于光栅化的 3D 渲染管线的计算结构如 OpenGL / DirectX / Vulkan / Metal 等并使用 OpenGL API 接口实现应用程序。
目录
0x00 专栏介绍
0x01 前置知识
0x02 将要学习的内容
0x03 开放图形库OpenGL
0x04 3D 计算机图形与应用
0x05 GPGPU 计算General-Purpose GPU Computing
0x06 3D几何建模和 3D动画
0x07 一些渲染技术的介绍 0x00 专栏介绍 本专栏主要内容是关于 3D 计算机图形技术的学习重点是学习与此技术相关的 3D 实时渲染 (3D real-time rendering) 技术。我们会以 理论 实践 的方式进行讲解将重点介绍基于光栅化的 3D 渲染管线的计算结构如 OpenGL / DirectX / Vulkan / Metal 等并使用 OpenGL API 接口实现应用程序。
GPU 通常被用来尽可能高效地加速这些计算过程并且目前除了上述 API 之外还支持用于通用 GPUPUGeneral-Purpose GPU Computing) 的 CUDA/OpenCL API。我们还将探索基本的光线追踪过程 (光追)并实现一个简单的光线追踪器以及介绍扩展现实领域中与实时渲染相关的问题比如立体图像生成和视觉焦点渲染。
值得一提的是本专栏通过广泛应用的 OpenGL API 来正确理解基于光栅化的 3D 渲染管线的计算结构这是计算机图形学教育中的关键内容。通过这样的理解您将能够轻松地学习使用 API 进行 3D 图形编程。 0x01 前置知识 注意在本专栏中我们假设读者已经掌握如下知识
掌握 C/C 的基础语法了解基本的矩阵和向量运算以及三角函数基础线性代数
以上是学习本专栏所需要的前置知识对的我们会在 Visual Studio 用 C 来写示例。 0x02 将要学习的内容
计算机图形学的核心主题包括几何建模、动画、渲染等。
我们的重点会放在 实时渲染 (real-time rendering) 上这是业界最优先需要的基础技术。
为了获得通过3D图形编程解决问题的能力计划涵盖基于OpenGL渲染管线的光栅化计算和初级光线追踪计算。最重要的目标是理解 3D 实时渲染管线 (3D Real-time Rendering Pipeline) 。 0x03 开放图形库OpenGL OpenGL全称 Open Graphics Library译名开放图形库或者“开放式图形库”是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口API。这个接口由近350个不同的函数调用组成用来绘制从简单的图形到比较复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
OpenGL 的高效实现利用了图形加速硬件存在于Windows部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API它的代码兼容于OpenGL。但是由于许可证的原因它只声称是一个“非常相似”的API。
当今OpenGL 是视频行业领域中用于处理2D/3D图形的最为广泛接纳的API在此基础上为了用于计算机视觉技术的研究从而催生了各种计算机平台上的应用功能以及设备上的许多应用程序。其是独立于视窗操作系统以及操作系统平台可以进行多种不同领域的开发和内容创作简而言之其帮助研发人员能够实现PC、工作站、超级计算机以及各种工控机等硬件设备上实现高性能、对于视觉要求极高的高视觉图形处理软件的开发。
❓ 为什么选择 OpenGL API
① 跨平台性 OpenGL 是一个跨平台的图形 API可以在多个操作系统上运行包括 Windows、Linux、macOS 等。这意味着您 可以编写跨平台的图形应用程序而不必担心特定操作系统的差异。
② 开放性和可移植性 OpenGL 是一个开放的标准由 Khronos Group 维护因此它不受特定公司的控制。这使得 OpenGL 在不同平台上的实现更加一致并且使得它在各种硬件和软件环境中都可以使用。
③ 广泛支持 由于 OpenGL 是一个开放的标准并且存在已经实现的许多版本因此它得到了广泛的支持。许多硬件厂商都提供了针对OpenGL的优化驱动程序从而提高了图形性能和兼容性。
④ 强大的功能集 OpenGL 提供了丰富的功能集可以实现各种图形效果和技术包括3D渲染、纹理映射、光照和阴影等。
⑤ 社区支持和资源丰富 由于 OpenGL 是一个老牌的图形 API因此有许多丰富的教程、文档和社区资源可供参考和学习。这使得学习和开发OpenGL应用程序变得更加容易。
尽管现在有一些其他的图形 API 可供选择比如 Vulkan但是 OpenGL 仍然是一个流行且功能强大的选择特别是对于那些希望实现跨平台图形应用程序的开发者来说。 0x04 3D 计算机图形与应用 目的研究创造类似现实的虚拟三维世界。以及生成和应用从中产生逼真图像所需的技术 —— 综合与分析 (Synthesis versus Analysis) 核心主题如下
3D 几何建模(3D Geometric Modeling)如何有效地表现虚拟的三维世界中的物体3D动画 (3D Animation) 如何自然地表现虚拟的三维世界中的动作3D渲染(3D Rendering) 如何生成与使用相机拍摄的真实图像类似的图像虚拟/增强/混合现实 (Virtual/Augmented/Mixed Reality) 如何通过使用各种用户界面将现实世界朝着更加有用的方向拓展 0x05 GPGPU 计算General-Purpose GPU Computing
随着现在的 GPU 越来越牛b不仅可以解决 3D 图形领域的问题还可以用于解决具有 计算密集型数据并行 (compute-intensive data-parallel) 特性的一般应用问题。 什么是 compute-intensive data-parallel compute-intensive data-parallel即 计算密集型数据并行 是一种计算模式通常用于处理大量数据和执行复杂的计算任务。在这种模式下数据被分成多个部分并且这些部分同时被不同的处理单元处理以加速整个计算过程。这种模式常见于需要处理大规模数据集的任务例如机器学习模型的训练、图像和视频处理、科学计算等。在这些应用中处理大量数据可能需要大量的计算资源和时间。通过将数据分割成小块然后并行处理这些小块可以加快整个计算过程的速度。在计算密集型数据并行中通常使用的处理单元包括多核CPU、GPU、FPGA可编程逻辑器件等。这些处理单元具有并行处理能力可以同时执行多个计算任务。通过合理地利用这些处理单元可以实现高效的数据处理和计算任务加速。 CUDA / OpenCL编程 0x06 3D几何建模和 3D动画
3D建模是通过专用软件开发任何三维物体的数学、线框表示的过程称为 3D 模型。多边形模型曲面模型体积模型过程模型…… 三维动画是指对物体的时间描述即物体如何随着时间的推移而移动和变形。 移动和变形。关键帧逆运动学动作捕捉基于物理的模拟……
动作捕捉 (Motion capture) 基于物理的流体动画 0x07 一些渲染技术的介绍 实时渲染 需要在 极短 时间内如每秒 30-90 帧或更多实时生成图像以创建交互式图形应用软件。例如 三维游戏、虚拟/增强/混合现实、三维图形用户界面等。
在过去由于需要在有限的时间内完成渲染计算因此使用了 简单化 的渲染模型 → 生成的图像不够逼真。但现如今处理器制造技术的最新进展使得实时生成非常逼真的图像成为可能。
逼真渲染Photorealistic Rendering是一种生成图像的技术看起来就像用相机拍摄的一样。通常需要大量计算但能生成高度逼真的图像。传统上用于电影 / 广告特效制作领域。 科学可视化 (Scientific Visualization)利用并行计算实现海量科学数据可视化的实例 [ 笔者 ] 王亦优 | 雷向明[ 更新 ] 2023.3.
❌ [ 勘误 ] /* 暂无 */[ 声明 ] 由于作者水平有限本文有错误和不准确之处在所难免本人也很想知道这些错误恳望读者批评指正 参考文献 - Inseong Lim, Programming Three-Dimensional Graphics with OpenGL: The Basics, Green Publishing, 2001. – J. Hughes et al., Computer Graphics: Principles and Practice(3rd ed.), Addison-Wesley, 2013. – S. Marscner et al., Fundamentals of Computer Graphics(4th ed.), CRC Press, 2015. – E. Angel, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL (7th ed.), Addison-Wesley, 2014. – T. Akenine-Möller et al., Real-Time Rendering(4th ed.), AK Peters/CRC Press, 2018. – D. Shreiner et al., OpenGL Programming Guide(9th ed.): The Official Guide to Learning OpenGL, Versions 4.5 with SPIR-V, 2016. – G. Sellers and R. Wright Jr., OpenGL Superbible: Comprehensive Tutorial and reference(7th ed.), Addison-Wesley Professional, 2015. – J. de Vries, Learn OpenGL – Graphics Programming, Kendall Welling, 2020. – D. Wolff, OpenGL 4 Shading Language Cookbook(3nd ed.), Packt Publishing, 2018. – D. Ginsburg et al., OpenGL ES 3.0 Programming Guide(2nd ed.), Addison-Wesley, 2014