Hi, shane007,
$ m0 p( S6 `* a) m$ a* m' B
& `" n/ o" y$ ~' B; x5 A# {* j( S4 k我刚刚浏览了一下scummvm的结构,按照普通的编译方法,我们得到的scummvm应该是define了SDL_BACKEND的,debug的时候也会发现scummvm会跳到/backends/platform/sdl/下面处理一些事件,那么我怀疑Graphics::Surface实际上和SDL_Surface相像甚至是一回事,回到engines/scumm/charset.cpp这个目录来看,前面部分的函数完成的是对不同种类字体的读取和转换。我现在考虑到这后面两个函数:CharsetRendererNES::drawChar()和CharsetRendererNES::drawBits1(),这个程序似乎在完成了前面的转换之后,终于开始使用这两个函数把字体绘制到屏幕的(x,y)处(实际也就是那个surface类型的指针)。
( ?& D1 ~* x* p }$ W* h- {1 O% M
4 q- [/ u) b% z0 ]% B我想近期把这个程序改一下:scummvm整个系统并没有使用sdl_ttf这个函数,所以我想添加这个函数,把字直接绘制到那个surface上面,应该可以擦去的。如果怕这个ttf函数影响其他游戏,加一个game_id的判断让它只对indy4有效就可以了。8 H S- j. c: [7 ?
9 z: r2 C- P. _0 Q& u# Q; g验证这个想法,往屏幕写一个简单字串测试一下就可以了,有错还请大家指出。 |