如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目# X+ K+ f c- k+ h) `+ x5 f. P
http://blgames.proboards.com/ind ... =250&page=1
; {# i* H& T6 P n& o }5 F( [- H0 @7 S: c' p; I
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
" `- T0 T" j, m* ~% O. O7 r1 l! f! n游戏初始化时一次性创建,显示的时候填充& o" @" t: u( h c6 W
用到哪里创建哪,每句话根据码表单独创建一个纹理& b& P( ]( q, ^2 a+ n
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制2 ^$ q& x4 b6 R6 c, b' {/ [ v" P
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理9 z8 h, n+ |4 o$ b0 _" c$ [3 E
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
$ D4 v- i' W! M# ?& h# _6 H( b总之很多方法,首先要兼容这些不同的输出方式5 @5 M7 k; y9 B" W& O3 |, k: ?: s, h7 r
+ k# n" S6 w' E+ d ?' l另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,# T- }9 Z; [9 B4 B) b, |: G
然后找到一个不影响效率的时机用自己的汉化后纹理来替换
4 M* Y# b& a" Q: }1 p' c0 }6 e: s+ j% @* H$ I1 P9 A# E5 E
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |