如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目' ^! p4 Q$ l4 g% A
http://blgames.proboards.com/ind ... =250&page=1
5 K9 v8 v( S5 K- I# o7 D6 F. d
* m9 g* ~$ ~- n+ ] D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
# x/ W0 p+ Z1 _$ G. \ [( P游戏初始化时一次性创建,显示的时候填充
4 c e) Q" H. m0 O, l, A! `4 G: n用到哪里创建哪,每句话根据码表单独创建一个纹理" @5 X q8 S3 `5 @ U0 D4 a3 e9 B/ D
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制. L+ R* j# @# D% n2 o# b& {
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理2 ~' F" \' E% D, P8 \6 J
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
+ P0 l% i! v1 K: o6 t3 I" G0 {总之很多方法,首先要兼容这些不同的输出方式
- \ M. P t& U& U; ~7 s; W1 n) f& U( ?, r+ X5 Q$ W1 X
另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,/ e' Y5 y9 p( [5 Z: [
然后找到一个不影响效率的时机用自己的汉化后纹理来替换
( K4 v! \7 F9 [6 z" |
. [* h, o- v) A7 k% ^& oLZ 比对图片二进制数据的方式不知能否区分出各类纹理 |