如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
( ^2 m$ ]: E6 B0 C* I$ q. S! X. dhttp://blgames.proboards.com/ind ... =250&page=19 S6 B1 W. h/ x0 z7 w0 X
. @6 V4 ]8 Q2 f+ e& i4 Q; @& b
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,& F3 _- _* Q( E, u/ P' ~
游戏初始化时一次性创建,显示的时候填充3 B! p3 g7 t' m Z! w
用到哪里创建哪,每句话根据码表单独创建一个纹理8 L0 X/ E1 @0 Q6 C: O
效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制1 h* n k! y4 f4 M! ^$ X
效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理+ ?8 T8 S) h E' x( ^* [
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理 K/ i- P3 g5 W3 ^4 @
总之很多方法,首先要兼容这些不同的输出方式
* f$ P& |0 w, J) q2 h
. p6 Y" y' z+ k& t% E另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,6 Q5 Z6 x! j+ W& K. S# z/ l
然后找到一个不影响效率的时机用自己的汉化后纹理来替换* K7 U; s$ X; k
+ W# V' L- l6 e3 c/ }
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |