如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目; S) I. d. h K5 @( u, @. g: E
http://blgames.proboards.com/ind ... =250&page=1& K) j4 P; g% e9 l0 Q$ _
8 F+ l" {; _4 _% M1 l
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,; j) V: h* u* {4 H& m
游戏初始化时一次性创建,显示的时候填充0 ^. X v6 [6 V$ b% R8 z: x
用到哪里创建哪,每句话根据码表单独创建一个纹理% S! F) R7 C, d, {8 Q
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制& b8 }7 X5 G U0 y6 J- [6 `
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理0 R/ g$ d0 m2 E+ ~) J2 x" Q) ?
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
8 D7 t% x& S' H$ }7 H7 \9 J: J; l+ [总之很多方法,首先要兼容这些不同的输出方式
! I" i! i+ \0 |9 k% U
& w) }+ a$ a6 m" z另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
; v) i1 p, [5 H' V R然后找到一个不影响效率的时机用自己的汉化后纹理来替换2 h# G0 ~' Y: `" D! {) }, P' |
( s" X, r* ]5 ? W8 j- QLZ 比对图片二进制数据的方式不知能否区分出各类纹理 |