花了一段时间实现了一个完全scanline的2d引擎...效率十分的不理想...诸如for(int i = 0; i < 100; i++) Draw(pBitMap,i,i);
这样的绘制速度完全赶不上无任何优 『More』
wsxp 里是结合的. 以分块为主, scanline 为辅. scanline 只做覆盖优化用.不需要精确.
scanline 的合并的代码要小心的写, 并且不要多用. 我的做法是 RLE 图片, 『More』 - 回复 | (505) | 云风 | 2004-09-23 08:45:19
确实....精确计算的scanline在某些情况下还没有z-buffer速度快.... 按照ws++的方式...判断某个block上的object是否发生了变化是在client端调用changexxx的辅助下加以计数完成的.... wsxp对这个部分应该有很大的改变了吧...client端调用changexx的函数也是件很麻烦的事情...我觉得这个操作其实可以省略掉..只是得改变下调用得方式...而且在某些情况下并不能很好得区分unchange跟selfchange...这个工作可以交给object自己来完成...canvas告诉object当前绘制得位置..绘制得方式..object结合自己得内部状态就能返回给canvas究竟是何种change...其实也只是把部分得工作由client交到了object手上...但是这样一来..object得大小肯定会变大....我想知道你曾经说用了c++得一个技巧..保证object保持不变..从而省掉了object往canvas得block得队列里面copy得操作...如果能省掉这个copy得话...object大点也无所谓..但是..我却想不出来究竟是个什么技巧能保持他的内容不变化?....并不能限制client去改变object的内容呀...难道copy on write?...... 如果出版社允许....嗯...真的很期待能提前看到你的书
yyyhgdlo'o'lkwd1rfvfdh6e4umrnjf nujmj - 回复 | (1225) | chenguanglin | 2006-08-17 08:14:11