本文操作按照《c&c++开源库编译指南》中内容规范编写,编译环境配置、工具下载、目录规划,及更多其他开源库编译方法请参考该文章。
c&c++开源库编译指南:https://blog.youkuaiyun.com/binary0006/article/details/144086155
本文章中的源代码已提交到gitee仓库,地址:https://gitee.com/binary0010/depends/tree/master/c/openexr-2.3.0
1.openexr概述
OpenEXR 是由工业光魔(Industrial Light & Magic,ILM)开发的一种用于存储高动态范围(HDR)图像数据的文件格式,同时也是一套实现该格式读写操作的开源库,在影视、动画、游戏等视觉特效领域有着广泛应用。
从技术角度来看,OpenEXR 采用了无损压缩算法,如 PIZ、PXR24 等,能够在有效减小文件体积的同时,最大程度保留图像的原始信息,确保图像的高质量和高保真度。它支持多通道数据存储,除了常见的红、绿、蓝(RGB)通道外,还可以存储深度、法线、透明度等额外信息,为后期制作提供了丰富的数据支持。OpenEXR 库使用 C++ 编写,提供了一套完整的 API,方便开发者进行图像的读写操作。在编译方面,它具有良好的跨平台性,可在 Linux、Windows、macOS 等多种操作系统上编译,不过编译时可能依赖一些其他的库,如 zlib、Imath 等。
在应用场景上,OpenEXR 主要用于影视制作中的合成、渲染和后期处理环节。在渲染过程中,渲染器可以将生成的高动态范围图像保存为 OpenEXR 格式,方便后续的颜色校正、合成等操作。在后期合成阶段,OpenEXR 的多通道数据可以帮助合成师更精确地控制图像的各个部分,实现复杂的特效。此外,在游戏开发中,OpenEXR 也逐渐被用于存储和处理高质量的纹理和光照信息。
在开源社区,OpenEXR 遵循 BSD 许可协议,代码托管在 GitHub 上。社区非常活跃,不断有开发者对其进行维护和更新,添加新的功能、优化性能以及修复潜在的漏洞。许多知名的影视制作公司、动画工作室和游戏开发团队都在使用 OpenEXR,它已经成为了高动态范围图像存储和处理的行业标准之一。
2.openexr编译
2.1.源代码下载
openexr源代码可以在github上下载,源代码下载地址:https://github.com/AcademySoftwareFoundation/openexr/releases,这里我们使用2.3.0版本,使用较低的版本能确保vs2008编译不会出错,在这个界面往后翻直到找到2.3.0版本后,按照下面的截图选择下载openexr-2.3.0.tar.gz。


2.2.windows编译
先解压源代码到指定目录,openexr-2.3.0版本已经了提供CMakeLists.txt编译脚步,我们按照规范会对该脚本进行修改。
2.2.1.openexr源代码工程分析
当我们打开 openexr 源代码根目录下的 CMakeLists.txt 文件时,能够清晰地看到其中包含了多个关键子目录,分别为 IlmBase、OpenEXR、PyIlmBase 和 OpenEXR_Viewers,并且每个子目录下又涵盖了多个工程,下面将详细阐述这些子目录及其包含工程的作用。

最低0.47元/天 解锁文章
687

被折叠的 条评论
为什么被折叠?



