如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
! R+ c% J& t7 d+ N: A+ zhttp://blgames.proboards.com/ind ... =250&page=1
& `; n: h9 k& P; [7 O! a0 H: V# Z% O: V/ k \
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
" C# ~; M( j% `' U游戏初始化时一次性创建,显示的时候填充
$ D& @' x& F' d5 k用到哪里创建哪,每句话根据码表单独创建一个纹理
" ]+ B q* I% F! O: L1 f效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制& o. E3 F1 r* \. w3 J" W8 q
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理
, q- ~7 R# ]$ {! m u& l折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
+ O5 I# _3 l2 c) I9 E. ~3 o总之很多方法,首先要兼容这些不同的输出方式
" S& A7 @) i4 k& B. M6 N8 @# K/ S
+ y( G: O( o9 U1 A6 G另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
( ?5 x, R) n0 Y; h+ ^然后找到一个不影响效率的时机用自己的汉化后纹理来替换
& D/ x9 r! n; U2 k# z N3 R7 s9 E) H; @9 h$ U8 d9 L
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |