vs2010 编译 SALVIA源码
关于SALVIA:
SALVIA is a pure object-oriented software 3D renderer with a programmable pipeline only.
Interfaces, operations and parameters of it take advantage of modern graphics APIs such as D3D 10 and OpenGL。
(PS: From SALVIA的google code主页)
SALVIA是一款光栅化的软件渲染器,设计目标是达到Direct3D 10/11的核心功能的实现。我们的设计目的主要包括以下几点:
一个高度可移植的光栅化图形管线的软件实现
图形硬件工作原理的展现和教学
为下一代Many Core或Larrabee类的多x86处理器架构的计算设备提供高性能的图形绘制能力
提供在GPU一类的流处理器上难以实现,但在Many Core架构的设备上有着显著优势的Features
比图形API更加易于使用的接口
与复杂的渲染技术(如辐射度和光线追踪等)相结合的可伸缩的渲染体系,研究可以提供速度-质量相均衡的渲染架构
SALVIA的接口参照了DX10的设计,以流水线划分Stage;每个Stage及其相关设施的接口,均采用了Object-Oriented的设计风格。
这种设计与D3D9和OGL的状态机风格的设计相比更易于使用,同时也降低了流水线前后级的耦合,对于优化或扩展都是有利的。(PS: From 开源中国社区)
空明大和龚大等都参与了开发(无限膜拜ing)
注意事项:
之前在xp下vs2008编译SALVIA源码遇到很多问题,后来在Q上联系空明大,空明大建议最好是用vs2010。一些依赖库是基于vs2005和vs2010的,建议还是vs2010。
安装所需:
(*注意以下都是用于32位系统的,64位的请到官网找相关版本,sourceforge等有时是需要FQ的,请自带梯子)
boost 1.51 下载地址: http://sourceforge.net/projects/boost/files/boost/1.51.0/
(PS:空明大说SALVIA项目会尽量保持boost的最新版本,所以这里使用boost的 1.51)
(PPS:不需要先编译boost SALVIA会一站式编译的。当然你如果之前编译过,下面会重编译一边- -)
Python 2.7 下载地址: http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi
cmake 2.8 下载地址: http://www.cmake.org/files/v2.8/cmake-2.8.10.1-win32-x86.exe
tortoiseHg 2.5 下载地址:http://bitbucket.org/tortoisehg/files/downloads/tortoisehg-2.5.1-hg-2.3.2-x86.msi
安装步骤:
1. 解压boost 放到配置起来比较方便的目录。
2. 安装python。安装完成后设置环境变量的PATH,添加Python的目录。(PS 环境变量的设置如果不熟悉,请google之)。
3. 安装cmake。安装完成后设置环境变量的PATH,添加cmake目录的下bin的目录到PATH,注意不是cmake目录,而是cmake下的bin目录。
4. 安装tortoiseHg,进SALVIA的google code 主页 https://code.google.com/p/softart/,找到source选项,复制SALVIA的hg clone的地址,这里我直接贴上https://code.google.com/p/softart/ 。找一个平常放工程的文件夹,右键你可以看到tortoiseHg的选项。选子菜单中的clone选项,弹出一个对话框,让你输入想要clone的地址,和放代码的目录,clone的地址即https://code.google.com/p/softart/ ,放代码的目录看个人的情况 (PS: 在download页面可以直接下载SALVIA Sample的Demo,运行看效果。)
5. 当Hg Clone完 在SALIVA源代码目录下,你将会看到名为build_all.py的文件,直接双击运行(不要通过命令行,否则会造成参数接受不正确),同级目录下生成proj.py文件,用记事本打开,修改其中的配置。配置是关于编译器,操作系统,boost目录和cmake目录的。要根据具体情况配置,下面给下的我的配置,以作参考。
################################################ # !!!! DO NOT DELETE ANY FIELD OF THIS FILE !!!! ################################################ boost_root = 'E:/boost_1_51_0' build_root = '.\\build' install_root = './' arch = 'x86' # or 'x86' toolset = 'msvc-10.0' # toolset = 'msvc-10.0', 'msvc-9.0', 'msvc-8.0', 'gcc-4.3', etc, or None. config = 'Debug' cmake = 'E:/CMake 2.8/bin' # Path of cmake executable. Environment variable PATH is available on windows platform.
配置完成,保存文件。
6. 运行build_all.py 。(PS:不是proj.py) 开始编译boost和SALVIA的dll。20-30min之后大约完成(PS:本人i5,所以建议中午去吃饭之前编下。。)。这步完成之后,下面开始编译LLVM。LLVM下下面编译sample和driver等的依赖项,所以需要先编译。
7. 打开cmake的gui,里面的source目录选择SALVIA\3rd_party\llvm , build目录按自己喜好。然后点击gui的configure按钮,选择要生成的项目的编译器,5min之后configure完成后;点击Generate按钮,生成项目(PS:对vs而言就是对应的sln)。
8. 打开刚才cmake build所在目录,打开项目编译SALVIA的编译依赖项LLVM,编译时间在15分钟。(PS: 你可以选择去买个早点。。)
9. 准备工作已经完毕,打开SALVIA源码目录下的build目录 salvia_ntx86_msvcX 目录,打开其目录下的salvia.sln项目。 然后设置全局的dx include目录和llvm include目录(PS: 刚才build生成的include和原llvm include目录都要加进来),设置全局的lib目录,即刚才LLVM编译成功的lib目录。
10. 设置工作完成之后,右键sln,点击build。等一段时间之后,编译工作完成。生成的Sample和dll在SALVIA下bin->ntx86->Debug 目录下。
下面码效果图一张。
最后3P一下,错了。。PS一下: debug模式下,运行程序很慢,如果想要看效果建议还是自己build个release模式的,或者直接在SALVIA的google code 官网下载release版本,大概24M。
在此深深感谢空明大的指导,和龚大的鼓励。
也”感谢”GFW,为中间的过程平添许多插曲。
参考资料:
SALVIA群号:22059645
http://www.cppblog.com/lingjingqiu/archive/2012/01/12/162868.html