如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
7 F! y4 }+ q4 E# M. w0 \http://blgames.proboards.com/ind ... =250&page=1
C- @, h* Z1 e! y+ C# p
' `: R. [. O$ K0 \* p: q) G1 D8 W D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
) L- X e9 [5 E% b7 n) ], E游戏初始化时一次性创建,显示的时候填充" y( o- r9 U1 H; ~
用到哪里创建哪,每句话根据码表单独创建一个纹理- Q: u0 Q6 n) k
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
7 r1 E) v: v8 \- ]% c效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理/ I" w/ [% _, v" \# K8 k9 x
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
% d+ y7 a0 E$ w# L1 a总之很多方法,首先要兼容这些不同的输出方式
- }0 q& ^0 M. \3 @" s$ m% H0 H
$ ]. P% X& D# F- h3 u) n0 `8 e另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,4 ?3 `# R# _3 C- j, C
然后找到一个不影响效率的时机用自己的汉化后纹理来替换1 t1 |8 E5 N7 C6 s7 H$ Z
1 P4 g1 N9 x" k% I& ]LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |