Heyo,这是我第一次在这里问一个问题所以请原谅我,如果我搞砸了~~ <
我正在开发一个类似于openCanvas的程序,早期的程序允许多人通过互联网实时绘制同一个画布.OC真的很麻烦,并且有很多限制,这就是我想写这个的原因.
我已经设置好了,所以画布在所有方向上"无限延伸",由512x512块像素组成,这些像素在被绘制之前不会变得活跃,这应该很容易制作,而我正在考虑使用Direct3D使其硬件加速,因此512平方块.
我的问题出现在我想要使用图层时,我不太确定如何快速编写图层并且不使用大量内存,因为我的目标是具有128米内存的DirectX9兼容视频卡,以及大约3.2 ghz的系统CPU功率和2到8演出的RAM.我有一些不同的方法,我正在考虑使用,并想知道哪些可能是最好的,如果有什么我可以调查,使它运行得更好.
我的第一个想法是让gfx硬件通过将所有块上的所有层用作纹理来尽可能多地工作,并且通过锁定更改的区域,在cpu上更新它们以及解锁它们来更新它们.那些目前没有被改变块被压扁成一个纹理和所使用的单个层本身被保持在系统存储器中,这将降低GFX存储器,但可以显著提高系统和GFX存储器之间的带宽使用.我可以看到持续锁定和解锁可能会使系统变得非常糟糕.另一个可能的问题是我听说有些人使用多达200层,考虑到上述情况,我想不出任何优化方法.
我的另一个想法是在系统内存中组合纹理 - 完全 - 将它们写入纹理,并将该纹理复制到gfx内存以在每个块中呈现.这似乎消除了其他方法的许多问题,但同时我将所有工作都转移到CPU中,而不是平衡它.但是,只要它仍然能够快速运行,这不是什么大问题.然而,再次,有几百层的问题.在这种情况下,我可能只更新实际更改的最终像素,这就是我认为像Sai和Photoshop这样的大名称程序.
我主要是寻找建议,可能会改进上述建议,更好的方法,或链接到可能与此类项目相关的文章.当我用C++编写它时,我可以毫不费力地翻译其他语言.谢谢你的时间〜