如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目1 w% w1 B# d0 p/ A$ Z1 x
http://blgames.proboards.com/ind ... =250&page=1
0 G9 h# V' s4 ^4 G4 |+ }
0 P! e" w2 X- N% \6 J D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
J+ g8 P- r( B! ?8 E, Q* _游戏初始化时一次性创建,显示的时候填充
3 a7 p# R( t1 D8 T: ~! r用到哪里创建哪,每句话根据码表单独创建一个纹理
. s5 y5 s- C K [7 u效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
+ f5 ]7 y1 V5 S3 R7 I% J/ ^效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理/ r/ C1 s" i: ]1 L K! h
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理5 k5 W' N6 Z' e( Y# I- k- z/ V
总之很多方法,首先要兼容这些不同的输出方式
3 j% w4 c5 T+ y, S. ]; @+ N9 P, s( w: \ w4 h! A, c
另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
* x+ K1 {/ z' i: _2 n5 B, L! D7 z然后找到一个不影响效率的时机用自己的汉化后纹理来替换
( x- \+ W8 S- ]
}7 T" }& g- tLZ 比对图片二进制数据的方式不知能否区分出各类纹理 |