如果是2D游戏,对白输出都是通过固定API函数,很容易做. 看这个textout hook 项目
" P" p; \0 c8 X0 E5 chttp://blgames.proboards.com/ind ... =250&page=14 n, c' s1 R4 y* Z
3 o* n! V; _8 g1 T& u9 i
D3D游戏的话,基于速度的考虑,一般是采用纹理方式输出,纹理又分动态静态,
' j- |* C; X8 w; B$ K: D& f/ B游戏初始化时一次性创建,显示的时候填充 q' m8 v6 K3 k; y4 _
用到哪里创建哪,每句话根据码表单独创建一个纹理
# x6 B* J' f m+ f+ d# I8 a效率最低的方法是用GDI建立纹理数据,然后填充纹理,最后绘制
1 X x0 y) O5 h效率最高的方法是直接存储每个字母的对应纹理坐标,使用固定纹理# W1 `0 e' {+ r
折中的方法是建立每个字母的图像数据,使用哪个字母就建立对应的纹理, M+ M% U! L6 {5 n
总之很多方法,首先要兼容这些不同的输出方式
* [3 U" L1 J1 }- `( U
( P/ H1 B+ J6 d8 p& T4 o5 A另外一点主要是如何区分一般游戏纹理,与文字纹理,还有带文字的图片纹理,
, d& G3 m$ S o- y3 C: l0 @& e3 `3 t! [然后找到一个不影响效率的时机用自己的汉化后纹理来替换9 ~* G& k0 X) V7 G1 A
6 k9 [% \5 ]6 w$ L& j7 i
LZ 比对图片二进制数据的方式不知能否区分出各类纹理 |