我有一个C#程序,它使用生产语法生成树、花和类似有机实体的3D模型(参见
wikipedia entry
关于L系统的更多信息)-当我生成一棵有叶子的大树时,如果我愿意(我也愿意),我(预期)得到的字符串将以指数级增长,达到100的Gig。
约束——我必须在C++中这样做(C++)——C++/本机端正在忙编译和渲染产生的相当庞大的几何图形。
所以StringBuilder是正确的-即使它可以处理它,我没有足够的内存!
我不想做一个纯粹的基于文件的解决方案-waaaaaayyyyyyyyy tooooooooooooooooowwww!
我不能改变语法-我意识到我可以压缩标准的L-Systems符号,但它是一个上下文敏感的语法,所以一旦你让它工作,你就会对摆弄它产生积极的迷信。
我考虑过的事情
内存映射文件-我不介意使用P/Unjk来支持本地层,我不想在C++中重写整个生产系统,但是我没有发现很多方便的C库访问这个功能的方法。
在内存管理/页面错误等方面进行低级的混淆视听-但是,如果我这样做了,我还不如把它作为一个产品来销售-这使得缓慢的纯基于文件的解决方案看起来不是一个坏主意
有人有什么想法吗?如何有效地遍历/操作/扩展由产生式语法生成的multigig字符串?