如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目7 H, t* D5 C# a3 V
http://blgames.proboards.com/ind ... =250&page=1 h- s/ @: S* I1 D: [$ Z h: _, J
S2 G* `) P% N1 W6 |5 A1 u$ f
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
- P# H* B4 [- o3 b" L! b$ K o2 @游戏初始化时一次性创建,显示的时候填充
$ t8 [2 y* p$ T0 F7 Q8 I2 f用到哪里创建哪,每句话根据码表单独创建一个纹理 M4 G4 O H" l9 c; p4 ?
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
/ Y& ^( Q1 d. n2 D效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理6 T# O+ V* J" l5 C4 j
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
4 H4 B: p5 g- n8 _9 m总之很多方法,首先要兼容这些不同的输出方式+ ?2 C# h6 d0 f/ r- C- m
* z# E" ]2 A& @另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理, p; p! W2 L. @2 i1 l! l, E
然后找到一个不影响效率的时机用自己的汉化后纹理来替换
0 h8 \, \$ y% d' ~4 e3 T3 f, q" H( {" H+ Y+ N9 ~& R9 z4 t% @
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |