冒险解谜游戏中文网 ChinaAVG

标题: 【OpenGL汉化研究】OpenGL汉化新思路 [打印本页]

作者: shane007    时间: 2010-1-23 22:08
标题: 【OpenGL汉化研究】OpenGL汉化新思路
最近对OpenGL进行了一些研究,有了一些新的思路,先写下来备忘。
1 l! M$ l% z% Z" v
7 g0 O( x" V6 XOpenGL的汉字显示,简单的说就是先用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