编译(Compiled)精灵



编译精灵是以现行机器码指令形式储存的, 可以将 指定的图片画在位图上, 它使用了 mov 指令和及时数据变量. 这是画掩式图片的最快方法: 在我的机器上 画被编译过的精灵大约比使用 draw_sprite() 画一个常规位图快 5 倍. 编译精灵比较大, 所以如果内存比较紧张的话你 应该使用 RLE 精灵来替代它, 并且它比 RLE 精灵有更多的限制, 因为他们不支持剪裁. 如果 你试着向位图边缘画, 将使内存操作不可靠而且极有可能使系统死掉. 你可以在运行时将位图转换成编译精灵, 或者你可以在 grabber 数据文件里, 建立一个位图对象然后 点选 '线形编译' 或 ' Mode-X 编译' 按纽来创建编译精灵


COMPILED_SPRITE *get_compiled_sprite(BITMAP *bitmap, int planar);
以指定位图来创建一个编译精灵(必须是内存位图). 编译精灵是设备关联的, 因此你必须 指定是编译成线形的还是平面的格式. 如果你将画在 内存位图或 mode 13h 和 SVGA 屏幕位图上, 第二个参数应传入 FALSE, 如果你将画在 mode-X 或 Xtended 模式屏幕位图上, 就传入 TRUE.


void destroy_compiled_sprite(COMPILED_SPRITE *sprite);
撤销一个由前面 get_compiled_sprite() 得到的编译精灵结构.


void draw_compiled_sprite(BITMAP *bmp, COMPILED_SPRITE *sprite, int x, int y);
向位图的指定位置画一个编译精灵. 精灵必须被编译成正确的位图类型 (线形或平面). 这个函数不支持剪裁.

建议: 也许不能剪裁编译精灵并不是个问题, 一个小技巧 是设置工作平面(内存位图, mode-X 虚拟屏幕 或其他) 比你实际需要的大那么一点点, 然后使用中间的一部分. 这样你可以稍稍的超出边界而没什么麻烦了...





返回