如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
* V( t& Z8 J' u6 e6 chttp://blgames.proboards.com/ind ... =250&page=1) b8 G0 D3 c4 R
: h0 S g0 b& i" {# @+ I
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
0 M, C2 k3 E! u; `. E9 E9 b/ W游戏初始化时一次性创建,显示的时候填充
, u% F% Y6 z+ h }用到哪里创建哪,每句话根据码表单独创建一个纹理
" g- |8 G) ~; K8 S5 t' l% a: x效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
( z1 s# T( e9 ] t效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理0 x# f I4 G. e6 y
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理
4 I; I% r+ I; w$ S总之很多方法,首先要兼容这些不同的输出方式3 f8 A4 i7 Q: R& Y- [; r
: n: f9 A* B V9 {
另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
# T, \) M* L) y3 p) W1 v) D然后找到一个不影响效率的时机用自己的汉化后纹理来替换0 ^7 V: x3 K0 T$ h$ H# C, F
# Q* @, n, d( x1 t; T2 ]4 Q- D/ h
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |