如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目& a4 N" m" W, D- N: i( `
http://blgames.proboards.com/ind ... =250&page=1
^; F! ?6 P( l2 _6 Z! ?! [" U5 z3 q7 V, n `9 h
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
( a8 A, V8 X+ {! m* K ~游戏初始化时一次性创建,显示的时候填充
# J- O- H! V" h4 `用到哪里创建哪,每句话根据码表单独创建一个纹理$ G1 Q8 W9 e$ E9 L2 G4 Z3 D
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
. O! w: z. |2 c. b& n `( _2 g8 ~效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理5 z; g( {4 S: `' a5 ?$ e2 X
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理$ s" ^: K8 l2 E/ h3 a
总之很多方法,首先要兼容这些不同的输出方式; m) }. J% L z3 Q
+ M7 N$ i6 l& O2 T. ]8 P% w' p
另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,4 X z' O% I" y+ [. e, t" K5 S
然后找到一个不影响效率的时机用自己的汉化后纹理来替换
# e: h0 K3 C% |2 v8 N2 Y V' T# I
# j1 F! D9 n, ^' m: i# mLZ 比对图片二进制数据的方式不知能否区分出各类纹理 |