冒险解谜游戏中文网 ChinaAVG
标题:
【OpenGL汉化研究】OpenGL汉化新思路
[打印本页]
作者:
shane007
时间:
2010-1-23 22:08
标题:
【OpenGL汉化研究】OpenGL汉化新思路
最近对OpenGL进行了一些研究,有了一些新的思路,先写下来备忘。
1 l! M$ l% z% Z" v
7 g0 O( x" V6 X
OpenGL的汉字显示,简单的说就是先用wglUseFontBitmaps函数把所有字符生成显示列表,
' N- G5 C' \2 X8 j4 z" I
然后用glCallList把显示列表显示出来。
( u/ O2 [6 m- a. P5 h
% k$ P7 c- s% s; i: {
下面说说汉化思路
7 a$ H2 U! d* R7 z
思路1. 英文游戏一般只生成了英文的显示列表,所以通过汇编级加大显示列表的容量,把所有的
7 g: B6 a( a" p0 x
中文字符都生成到显示列表里面,估计就可以实现汉化。当然,程序的性能可能会有影响,
4 {) z5 k: V& r- ]1 h+ N
但是,我认为生成显示列表一般在游戏初始化的时候进行一次,所以问题应该不是太大。
/ t/ i- |+ \; U/ v0 q+ S. u0 N' f9 x
下面的帖子可供参考
$ ]$ f+ S' ~& f) \& K% t
Win32下OpenGL的中文显示
' U, {+ U3 G- H4 e; H$ a7 Q3 ?6 j
https://www.chinaavg.com/read.php?tid=20406
( n- ]* r1 R$ R/ w6 Z0 _
4 c7 v o D/ [# V8 v2 }1 S
思路2. 根据我的理解,游戏更新画面的过程一般是这样的
: I* b0 T7 m9 B1 [7 E% |/ [
9 ]2 P8 @, g( v# B4 M% }
更新画面函数(区域1)
# n1 B/ W! A4 a: g j9 E% h
更新画面函数(区域2)
0 W' A) `3 x. C; M. Z
。。。
, M/ m: s: p2 B1 I2 `# m! R
更新画面函数(区域3)
/ [5 v% a: s8 p: K
显示函数(字幕1)
4 S/ r+ ^ v6 V. J) }5 z
显示函数(字幕2)
3 ^/ t! }2 g/ y9 T' R P, E' B
。。。
" S2 b+ `- G7 @, V: l& X
显示函数(字幕3)
, f/ R% ]; i" W! G6 c/ o
SwapBuffers(wglGetCurrentDC())
* V4 L6 I3 R/ Q& @! a% ^$ E
4 C' n, _6 _% h
所以,在显示函数的入口处,我们可以内挂一个DLL,把要显示的字幕输出到一个ini文件或是内存镜像文件中,然后HOOK SwapBuffers函数,在调用真正的SwapBuffers函数以后,读取ini文件或是内存镜像文件的内容,把要显示的字幕用textout函数显示到当前DC上,即可实现汉化。
+ k; ~4 x# C# t3 U
: f( }8 V7 t8 h4 |3 ~, q) U/ L, L
先把汉化思路写下来,等有空的时候再做试验,期待可以解决nibiru等使用opengl API的游戏的汉化问题。
作者:
solidji
时间:
2010-9-28 16:12
准备研究下OpenGL的绘制过程
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2