如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
# r$ A& z& n. D5 b1 ^http://blgames.proboards.com/ind ... =250&page=1
7 S, w2 T3 o$ @+ C$ s1 W
; u- @0 E \9 A2 y. c$ ^/ b+ B D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,& ?" S3 e/ }# }2 T) _
游戏初始化时一次性创建,显示的时候填充
+ Q$ u' r3 B7 X用到哪里创建哪,每句话根据码表单独创建一个纹理
) B) v; ^' Z: F- o效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制5 ~" C7 H, X/ k. k( Z0 G( Z' e
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理
7 _' W& Z& o% n7 v; V0 ^5 O折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
% o- N2 x6 n, c" V1 r$ q/ i总之很多方法,首先要兼容这些不同的输出方式2 P+ x6 @0 K. `, @
; Q/ k1 X) N5 {另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
z4 S7 u2 d* ^0 v! M% A# J& O) E然后找到一个不影响效率的时机用自己的汉化后纹理来替换* c/ q# R% X3 h5 u5 v
. R2 I6 t. Q# L; f2 O9 P' ALZ 比对图片二进制数据的方式不知能否区分出各类纹理 |