如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
: p/ p* M) E! vhttp://blgames.proboards.com/ind ... =250&page=1
7 r7 \; j1 Q' F7 t7 G* s
1 L. U [. {# T; S D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
! E# k$ N9 T& N* F: K) ]% P" S7 o游戏初始化时一次性创建,显示的时候填充
' z3 z1 j3 y+ K9 P1 h用到哪里创建哪,每句话根据码表单独创建一个纹理1 L: B: x" s3 \: ]# t* n
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制7 K9 Q, O0 a- D8 h$ j% M8 T2 T
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理/ q9 d) N: H0 U! j( m" ^5 [/ g8 q% k
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理! H- N3 p8 k! {7 i
总之很多方法,首先要兼容这些不同的输出方式3 H6 f7 D: U! W) L
. W8 L) n$ s ]. { k9 Z3 k3 K另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
; h1 I! h% W- g; }# u8 W! k然后找到一个不影响效率的时机用自己的汉化后纹理来替换4 U& U0 s# Q9 O
. p* g, F1 y8 P; R/ H. C" { u' nLZ 比对图片二进制数据的方式不知能否区分出各类纹理 |